打开循环中的每个链接(Selenium)

时间:2015-01-18 16:01:25

标签: java testing selenium selenium-webdriver

我只是试图找到它是如何工作的。我试图通过Selenium强制link打开link,但它会一次又一次地在第一个链接上打开,控制台输出显示循环正常工作。尝试使用while循环,但它也不起作用。我试图在链接后打开链接并更改li元素的编号以打开更多链接。

for (int footer_links = 1; footer_links < 6; footer_links++) {
    WebElement self_service_bi = driver.findElement(By.xpath("//div/div/ul/li['$footer_links']/a"));
    self_service_bi.click();
    File srcFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    File targetFile1 = new File("D:\\DataPineScreenshots\\" + driver.getTitle() + ".png");
    FileUtils.copyFile(srcFile1, targetFile1);
    driver.navigate().back();
    System.out.print(footer_links + "\n");
}

2 个答案:

答案 0 :(得分:1)

修复语法

By.xpath("//div/div/ul/li['$footer_links']/a")

通过

By.xpath("//div/div/ul/li[" + footer_links + "]/a")

答案 1 :(得分:0)

driver.findElement将始终返回该类型的第一个元素。使用driver.findElements函数获取与给定xpath匹配的所有列表。 但是不要在循环中这样做,因为每次它都会打开相同的链接。 尝试像:

List<String> lstUrls = new ArrayList<String>();
List<WebElement> lstEle = driver.findElements(By.xpath("//div/div/ul/li['$footer_links']/a"));
for (WebElement element : lstEle)
    lstUrls.add(element.getAttribute("href"));

for (String string : lstUrls) {
    driver.get(string)
    File srcFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    File targetFile1 = new File("D:\\DataPineScreenshots\\" +  driver.getTitle() + ".png");
    FileUtils.copyFile(srcFile1, targetFile1);
    driver.navigate().back();
    System.out.print(footer_links + "\n");
}