所以我有一个IE驱动程序的代码(该网站仅适用于IE ...):
PrintStream out;
try {
out = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(out);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("Main Handle: " + driver.getWindowHandle());
element = driver.findElement(By.id("lnk"));
element.click();
//try {
// Thread.sleep(1000);
//} catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
//}
try{
for(String winHandle : driver.getWindowHandles()){
System.out.println(winHandle);
driver.switchTo().window(winHandle);
}
}
catch(Exception e){
System.out.println("na bro, unlucky");
}
System.out.println("end");
System.out.println(driver.getPageSource());
应该有两个窗口句柄,它们似乎来自println。但它只能切换到主窗口,弹出的窗口无法切换到。即使我同时运行程序,也有两种可能的输出。这只是我得到的机会。第一个输出是:
主要句柄:cd484ff9-3dbd-487d-bfa3-805f19b1ff9d
cd484ff9-3dbd-487d-bfa3-805f19b1ff9d
005d28b9-1c4d-40CF-95ab-1782f2dc53fd
端
导致错误:
线程“main”中的异常org.openqa.selenium.NoSuchWindowException:无法获取浏览器(警告:服务器未提供任何堆栈跟踪信息)
这意味着它能够切换但是它不存在????这真的很奇怪。第二个输出可能是:
主要处理:cd9fe661-7257-48ff-93c1-17c89b1f9443
cd9fe661-7257-48ff-93c1-17c89b1f9443
2d96e296-47a2-4cd1-b994-89a2cbe4f045
呐,不幸的
端
然后继续打印出主句柄的页面源。我不明白为什么它不能抓住第二个手柄?我做错了什么?
答案 0 :(得分:0)
尝试在切换窗口的代码之前和之后放置thread.sleep(10000)
try {
Thread.sleep(10000);
for(String winHandle : driver.getWindowHandles()){
System.out.println(winHandle);
driver.switchTo().window(winHandle);
}
Thread.sleep(10000);
}catch(InterruptedException e) {
e.printstacktrace();
}catch(Exception ee){
System.out.println("na bro, unlucky");
}
System.out.println("end");
System.out.println(driver.getPageSource());
还尝试使用driver.getTitle()获取当前窗口的标题,以查看切换是否成功。