2013-03-03 110 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

相关问题