2017-11-11 115 views
0

有人可以協助下列問題: 我有一個動態數據表,每行有5個元素(有30行)。我必須遍歷每一行,拾取每列的數據並檢查它是否不爲零。 這裏是如何看起來頁面上(實際上它撿起從XPath的):用li元素迭代表格

/html/body/main/article/div/div[3]/div[1]/div/div/ol[1]/li[3]/div[1]/a 

以上就是其用戶名第一個用戶。 所有的用戶名(從表)我看到:

/html/body/main/article/div/div[3]/div[1]/div/div/ol[1]/li/div[1]/a 

正如你可以看到最後還沒有一個數字,如果達到,它指向的位置的用戶名:1​​,2,3。 ... 30 所以,我的問題是,我怎麼能在裏面使用li元素迭代。我嘗試這樣做:

First found size of table: 
int all = driver.findElements(By.xpath("/html/body/main/article/div/div[3]/div[1]/div/div/ol[1]/li/div[1]/a")).size(); 
    for (int i = 0; i < all; i++) { 
    //check if username exists and convert int to a string 
    String j = Integer.valueOf(i); 

最後它放入找到的XPath元素(最後李):

driver.findElements(By.xpath("/html/body/main/article/div/div[3]/div[1]/div/div/ol[1]/li["+get(j)+"]/div[1]/a")) 

我是什麼做錯了,並在每一次迭代沒有得到改變李[當前號碼] ? 預先感謝您 enter image description here

這裏是HTML:

<li class="list-item row"> 
<div class="column large-4 compete-standings-user"> 
<div class="user-photo"><img 
<a "profile/kalaka" title="Kalaka">Kalaka</a> 
<div class="column large-2 small-3 compete-standings-data"> 
<strong>71</strong>blogs</div> 
<div class="column large-2 small-3 compete-standings-data"> 
<strong>+69.9</strong>Accepted</div> 
<div class="column large-2 small-3 compete-standings-data"> 
<strong>+21.1%</strong>Pending</div> 
<div class="column large-2 small-3 compete-standings-datae"> 
<strong>L100</strong>Earned</div> 

enter image description here

+0

你能鏈接頁面嗎? – JeffC

+0

@JeffC不幸的是,因爲它處於開發階段,而不是公衆 – Zoran

+0

@JeffC如果可以幫助添加有問題的截圖。請注意,列表(用戶)中有第6和第7個,我必須提取(在一次迭代中)其用戶名,檢查博客的數量是否存在,待處理的數量,獲得的數量以及之後轉到第7個用戶(下一個一個)等等。 – Zoran

回答

1

所以快速的方法來獲得您想要檢查的文本是使用CSS選擇器,ol.compete-standings > strong。如果您注意到HTML,那麼您要檢查的每個數字都在STRONG標記中。該定位器獲取外部OL標籤內的所有STRONG標籤。

List<WebElement> numbers = driver.findElements(By.cssSelector("ol.compete-standings > strong")); 
for (WebElement number : numbers) 
{ 
    String s = number.getText().replaceAll("[^\\d]", ""); 
    Assert.assertNotEquals(0, Integer.parseInt(s)); 
} 

此代碼剔除掉所有字符除了數字,將字符串轉換爲一個int,並斷言(用TestNG),其數量不爲零。如果你沒有使用TestNG(或等價物)...你應該是:)。你可以在你自己的驗證。

+0

瞭解,但我怎麼能迭代列表中的下一個用戶。我希望什麼時候(即完成檢查第六位用戶,我的意思是所有他的數據)轉到下一個** for循環**並檢查第7個用戶(如果他/她擁有以用戶名開頭的所有數據)。這是我寫的問題:_最後把它放到找到的xpath元素(last li)中:_(和下面的代碼)。 – Zoran

+0

這將檢查所有用戶。 – JeffC

+0

瞭解。感謝您的努力 – Zoran