2017-05-31 155 views
0

如果我期待一个页面显示5个优惠,我将如何让webdriver列出所有5个优惠中的一个?通过webdriver中的列循环列表

该UI的HTML代码是

<ul id="more-load" class="product_list_widget pagination-centered" style="padding-top:15px;"> 

我想你会用

List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='more-load']/ul/li")); 

for (WebElement element: allElements) { 
     System.out.println(element.getText()); 
} 

,但我不知道如何打印在UL每一个人提供并匹配5个报价有望显示

编辑的代码

没关系用这个和工作

WebElement allElements = driver.findElement(By.id("more-load")); 

    List<WebElement> liElements = allElements.findElements(By.tagName("li")); 


    for (int i = 0; i < liElements.size(); i++) 
    { 
     System.out.println("-------------------------------------------------------"); 
     System.out.println(liElements.get(i).getText()); 
    } 

但是如果我在左侧一列,与UL =产品类别,我将如何循环到底,每个单独的链接文字和瓶坯相同功能

回答

0

比方说,你的5个报价情况如下:

Offer1 
Offer2 
Offer3 
Offer4 
Offer5 

现在你的做法是正确的,直到for循环:

,那么你可以这样做:

String offerString = Offer1 + " " + Offer2 + " " + Offer3 + " " + Offer4 + " " + Offer5; 

for (WebElement element: allElements) { 
     if(offerString.contains(element.getText()){ 

     System.out.println("Offer item is: " + element.getText()); 

     } 
} 
0

坚持自己原来的尝试,除了更改行:使用java8

List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='more-load']/ul/li")); 

List<WebElement> allElements = driver.findElements(By.xpath("//ul[@id='more-load']/li")); 
0

List<String> offers = driver 
      .findElements(By.cssSelector("#more-load li")) 
      .stream() 
      .map(WebElement::getText) 
      .collect(Collectors.toList()); 

,你可以断言报价.size()有任何断言库的一些期望值

要获得UL链接的文本元素,你可以使用下一个选择:

driver.findElements(By.cssSelector("ul a"))