2013-03-03 65 views
5

我想通過xpath瀏覽網頁,我想出了一些混合的結果。這是我在用的:Selenium WebElement xpath Java

driver.findElement(By.xpath("//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')]")); 

,實際工作很好,但這個問題我遇到了這樣的:

<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92300</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92475</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92476</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92301</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92474</div> 

當我在Selenium測試運行的XPath我總是第一個div 。如何編輯我的xpath以檢索第四個div(92301)或其他不是列表中第一個的div?

回答

8

使用此XPath (//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]得到4 thdiv

要找到div包含92301文本,使用這個XPath:

//div[contains(text(), '92301')] 
+0

謝謝,基里爾!這很好,但有時用戶在我要查找的內容之前或之後插入數據,這可能會改變位置。如果在它前面寫了幾個新的div,是否有另外一種方法可以找到92301的div? – cbohannon 2013-03-03 23:25:28

+0

@ user2055841,我已經更新了我的答案。 – 2013-03-03 23:56:37

3

您可以使用WebElement.findElements()

driver.findElements(By.xpath(...)).get(3) 

或修改的XPath:

driver.findElement(By.xpath("(//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]")); 
+0

謝謝,mantrid。這是超級有用的。它讓我感受到我所追求的。我也將繼續尋找更具活力的方式來做這件事,因爲我之後可能並不總是處於第4位。 – cbohannon 2013-03-03 23:41:15

相關問題