2016-04-25 77 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