選擇具有特定屬性的元素

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