选择具有特定属性的元素
XPath 选择器可用于选择具有特定属性的元素,例如 class,id,title 等。
按类别
视图:
<div class="HakunaMatata"> Hakuna Matata </div>
码:
var theLionKing= element(by.xpath('//div[@class="HakunaMatata"]'));
expect(theLionKing.getText()).to.eventually.equal('Hakuna Matata', "Text not found");
但是,元素可以有多个类。在这种情况下,可以使用包含解决方法
视图:
<div class="Hakuna Matata"> Hakuna Matata </div>
码:
var theLionKing= element(by.xpath('//div[conatins(@class,"Hakuna")]'));
expect(theLionKing.getText()).to.eventually.equal('Hakuna Matata', "Text not found");
上面的代码将返回包含’class =HakunaMatata
‘和’class =Hakuna Matata
‘的元素。如果你的搜索文本是以空格分隔的列表的一部分,则可以使用以下解决方法:
var theLionKing= element(by.xpath('//div[contains(concat(' ',normalize-space(@class),' '), "Hakuna")]'));
expect(theLionKing.getText()).to.eventually.equal('Hakuna Matata', "Text not found");
通过 id
ID 仍然是可用于选择元素的最简单且最精确的定位器。
视图:
<div id="HakunaMatata">Hakuna Matata</div>
码:
var theLionKing= element(by.xpath('//div[@id="HakunaMatata"])');
expect(theLionKing.getText()).to.eventually.equal('Hakuna Matata', "Text not found");
与类一样,contains 函数可用于查找包含给定文本的元素。
其他属性
查找具有给定 title 属性的元素
视图
<div title="Hakuna Matata">Hakuna Matata</div>
码
var theLionKing= element(by.xpath('//div[@title="Hakuna Matata"]'));
expect(theLionKing.getText()).to.eventually.equal('Hakuna Matata', "Text not found");
选择具有特定文本的元素
视图
<div class="Run Simba Run">Run Simba</div>
码
var runSimba= element(by.xpath('//div[text()="Run Simba"]'));
与其他基于文本的搜索一样,contains 函数可用于选择包含所需匹配的 text()
的元素。
视图
<div class="Run Simba Run">Run Simba,run</div>
码
var runSimba= element(by.xpath('//div[contains(text(),"Run Simba")]'));
expect(runSimba.getText()).to.eventually.equal('Run Simba, run', "Text not found"); //true
选择具有特定名称属性的元素
视图
<input type="text" name="FullName"></input>
码
var fullNameInput= element(by.xpath('//input[@name="FullName"]'));
fullNameInput.sendKeys("John Doe");