2016-04-25 57 views
0

我在具有相同类属性的网页上有多个div。 我正在寻找一种方法来检查我的页面的所有div为特定的类名,然后得到,为每个div,他们的Xpath。WebElement通过className查找的列表返回Xpath

其实,我可以检查我有多少格在页面上有一个类名:

 List<WebElements> test = driver.findElements(By.className("fitter")); 
    int countDiv = test.size(); 

你有一个想法,现在,让我的所有元素的Xpath一个接一个?或者你有不同的解决方案?

我的项目是一个硒项目,我正在测试一个网页。我的测试是用Java编写的,我使用的是WebDriver。

感谢您的帮助

+0

你的意思是你想自动获得独特'XPath'在列表中的每个元素? – Andersson

+0

就是这样!我知道我可以通过.Xpath直接得到它,但问题是div的数量是可变的。所以每次获得它们的唯一方法是按类获取它们,然后让Xpath在本地操作 – MxfrdA

+0

'findElements'方法应该返回元素数组。你为什么不通过每个元素的索引唯一选择器来调用它们中的每一个呢? – Andersson

回答

0

只需遍历webelements列表?

List<WebElement> elements = driver.findElements(By.className("fitter")); 
for (int i = 0; i < elements.size(); i++) { 
    WebElement element = elements.get(i); 
    // ... do whatever you need here 
} 

在循环中的每个元素的XPath的是

//div[contains(@class, 'fitter')][i] 
+0

谢谢,但我的问题是“做任何你需要在这里”^^得到每个Xpath。我可以做一个element.getXpath或什么? – MxfrdA

+0

我不认为有一种方法可以在一般情况下为每个元素分别提取xpath。但是如果你已经有了类名,你可以使用类似'driver.findElement(By.xpath(“// * [contains(@class,'fitter')] [i]”));' – kanghj91

+0

所以很自然,每个元素的xpath是'“// * [contains(@class,'fitter')] [i]”'其中i是循环的控制变量。如果你只想关注div,那么它就是'“// div [contains(@class,'fitter')] [i]”' – kanghj91