[英]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.