2017-05-09 13 views
0

元素xpath將像下面那樣..這些是動態的,所以有時候,只有一個會在那裏..有時候..所有3將會在那裏......等等,所以腳本必須識別隨着元素的數量出現並相應地逐一點擊。如何使用其xpath單擊動態列表。元素不斷變化

public void NumberOfStops(){ 
    Util.pause(Util.WaitingTime.SHORT); 
    JavascriptExecutor jse = (JavascriptExecutor)getDriver(); 
    jse.executeScript("window.scrollBy(0,1000)", ""); 
    Util.pause(Util.WaitingTime.SHORT); 
    Util.pause(Util.WaitingTime.SHORT); 

    List<WebElement> AirlineStops = this.getDriver().findElements(By.cssSelector("ng-scope layout-row")); 
    System.out.println("airlineSize = " + Integer.toString(AirlineStops.size())); 
    for (WebElement stops22 : AirlineStops) { 
      Util.pause(Util.WaitingTime.SHORT); 
      stops22.click(); 
      Util.pause(Util.WaitingTime.SHORT); 
    } 

的XPath會是這樣。

.//*[@id='stops']/div/check-box-switch/div/div[1]/label/div/div/div 
.//*[@id='stops']/div/check-box-switch/div/div[2]/label/div/div/div 
.//*[@id='stops']/div/check-box-switch/div/div[3]/label/div/div/div 

回答

0

,你可以看到一個特定的div是變化的,如果沒有元素的變化包含了所有不同的項目會如此 你一般的XPath;

.//*[@id='stops']/div/check-box-switch/div/ 

所以你可以做以下;

WebElement baseItem= this.getDriver().findElements(By.xpath(".//*[@id='stops']/div/check-box-switch/div")); 

List<WebElement> allItems = baseItem.findElements(By.xpath("/div")); 

for(WebElement item : allItem){ 

    WebElement currentItem = item; 

    //do your action here 


} 
+0

謝謝Kushal,'我'在這裏? – roopakjose

+0

再次感謝..它的工作..但它確定了從3列表中只有一個元素..任何猜測?? – roopakjose

+0

System.out.println(「airlineSize =」+ Integer.toString(allItems.size())); 上面的代碼只打印1而不是3 .. – roopakjose

相關問題