将Selenium Webdriver与JAVA一起使用,我正在尝试自动化一个功能,我必须打开一个新标签,在那里做一些操作,然后回到上一个标签(父亲)。
他失去了会话和错误。
//当我点击此处时会打开模态
driver.findElement(By.name("btnSimulateDK")).click();
我试过这种方式,如果我在此页面上输入登录名和密码错误,它可能已经在当前会话中打开并显示我可以执行的活动。
String winHandleBefore = driver.getWindowHandle();
driver.findElement(By.name("btnSimulateDK")).click();
for(String winHandle : driver.getWindowHandles()){
if (!winHandle.equals(winHandleBefore))
driver.switchTo().window(winHandle);
if(driver.getTitle().equals("Title of target window")){
//perform operation on target window
}
}
driver.switchTo().window(winHandleBefore);
}
答案 0 :(得分:1)
driver.getWindowHandles()不保证任何订单,它还包括当前窗口(父亲)。
所以不要只是切换到窗口
你需要检查winHandle是否等于winHandleBefore
如果是,那么只执行switchTo()
最好确保您登陆正确的页面。
喜欢
for(String winHandle : driver.getWindowHandles()){
if (!winHandle.equals(winHandleBefore))
driver.switchTo().window(winHandle);
if(driver.getTitle().equals("Title of target window")){
//perform operation on target window
}
}
答案 1 :(得分:0)
当其他会话打开时,IEDRIVER会出现问题,只需在任务管理器中关闭它们即可解决问题。
session cookie lost when click made to a link that opens a window with window.open()