2017-05-31 158 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"))