我只是试图找到它是如何工作的。我试图通过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");
}
答案 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");
}