美好的一天。我很难解决使用Selenium WebDriver中的循环无法在标签之间切换的问题。我可以立即执行此操作,但我需要在循环中重复使用代码。
出现错误:
“线程中的异常”主“org.openqa.selenium.NoSuchWindowException:无法找到窗口”
我的代码可以找到所有元素,在新标签中打开链接,关闭它。但是,它无法再使用下一个元素执行此操作。
这是我的代码(我正在使用Firefox):
List<WebElement> allElements = driver.findElements(By.className("_4zhc5"));
int s = allElements.size();
System.out.println("total users to check: " + allElements.size());
for (int i = 0; i < s; i++) {
allElements = driver.findElements(By.className("_4zhc5"));
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
allElements.get(i).sendKeys(selectLinkOpeninNewTab);
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
Thread.sleep(3000);
}
driver.close();
Thread.sleep(2000);
}
我还使用jsfiddle创建了一个原型页面。第二次尝试执行代码时出现错误。只是脚本没有点击另一个名为“可爱”的元素
谢谢你看看!
答案 0 :(得分:0)
您需要切换回链接所在的原始窗口。
最简单的方法是存储&#34;原始&#34;窗口并一直切换回那个窗口。
winHandleBefore = driver.getWindowHandle();
driver.close();
driver.switchTo().window(winHandleBefore)