在循环中打开每个 link (Selenium)
Open every link in loop (Selenium)
我绞尽脑汁想找到它是如何工作的。我试图通过 link
强制 Selenium
打开 link
,但它一次又一次地在第一个 link 上打开,控制台输出显示循环工作正常。尝试使用 while 循环,但它也不起作用。我试图在 link 之后打开 link 并更改 li 元素的编号以进一步打开 link.
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");
}
driver.findElement
总是 return 类型的第一个元素。使用 driver.findElements
函数获取所有匹配给定 xpath 的列表。 但是不要在循环中这样做,因为每次它都会打开相同的 link。
试一试:
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");
}
修正你的语法
By.xpath("//div/div/ul/li['$footer_links']/a")
来自
By.xpath("//div/div/ul/li[" + footer_links + "]/a")
我绞尽脑汁想找到它是如何工作的。我试图通过 link
强制 Selenium
打开 link
,但它一次又一次地在第一个 link 上打开,控制台输出显示循环工作正常。尝试使用 while 循环,但它也不起作用。我试图在 link 之后打开 link 并更改 li 元素的编号以进一步打开 link.
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");
}
driver.findElement
总是 return 类型的第一个元素。使用 driver.findElements
函数获取所有匹配给定 xpath 的列表。 但是不要在循环中这样做,因为每次它都会打开相同的 link。
试一试:
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");
}
修正你的语法
By.xpath("//div/div/ul/li['$footer_links']/a")
来自
By.xpath("//div/div/ul/li[" + footer_links + "]/a")