簡體   English   中英

在for循環中運行的調試腳本-Selenium WebDriver

[英]Debugging script run in for loop - Selenium WebDriver

考慮以下實現:

WebDriverWait wait = new WebDriverWait(driver, 60);
List<WebElement> countryLinks = driver.findElements(By.cssSelector("a[href*='/country/']"));
for (int i = 75; i < countryLinks.size(); i++) {
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[href*='/country/']")));
    Thread.sleep(1000);
    WebElement elem = countryLinks.get(i);

    JavascriptExecutor js = (JavascriptExecutor) driver;
    //this line will scroll to element.
    js.executeScript("window.scrollTo(" + elem.getLocation().x + "," + (elem.getLocation().y - 100) + ");");

    System.out.println("The Country is: " + elem.getText());
    elem.click();
    wait.until(ExpectedConditions.visibilityOfElementLocated(countryDetailVerify));
    driver.navigate().back();
}

上面的腳本僅在i = 75時運行一次。但是,當我在for循環中初始化列表並將for循環更改為for(int i=75;i<79;i++) ,它便可以正常工作。

我想在循環之外初始化我的列表,以便可以將其限制為列表的大小。 一種方法是制作另一個具有不同名稱的列表。 但這是最好的選擇嗎?

我將使用XPath並在定位器中設置索引並循環,直到沒有更多元素為止:

for(int i = 75; ; i++) {
    List<WebElement> countryLinks = driver.findElements(
        By.xpath("(//a[contains(@href, '/country/')])[{0}]".format(i)));

    if (countryLinks.size() == 0)
      break;

    WebElement countryLink = countryLinks.get(0);

    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM