选择具有特定属性的元素

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");