2015-01-18 6 views
0

Я просто взломал голову, пытаясь найти, как заставить ее работать. Я пытаюсь заставить Selenium открыть linklink, но он снова и снова открывается по первой ссылке, вывод консоли показывает, что цикл работает правильно. Пытался использовать цикл while, но он тоже не работает. Я пытаюсь открыть ссылку после ссылки и изменить номер элемента li, чтобы открыть дальнейшую ссылку.Открыть каждую ссылку в цикле (Selenium)

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

Что такое 'exception'? 'StaleElementReferenceExxception'? – Saifur

ответ

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"); 
} 
+0

Он отлично работает, спасибо большое! – user3166813

1

исправить ваш синтаксис

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

по

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

Я думаю, что это дает ответ на вопрос – vins