2017-11-11 117 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