Compare window.open with window.showModalDialog()
Function
detail
window.open()
是非阻塞式,也可以说非模态窗口
window.showModalDialog()
阻塞式模态窗口。阻塞或者模态窗口,只有你把当前窗口关闭后,才能去操作父亲窗口
How to handle it:
SeleniumUtils.clickWithTimeout
Method1:
// to pop-up driver.switchTo().frame(driver.findElement(By.cssSelector("iframe#fancybox-frame"))); Assert.assertTrue(SeleniumUtils.isTextPresent(driver, "Are you a returning official?")); log.info("Assert ok "); //yes //new thread to click radio button new Thread() { public void run() { SeleniumUtils.selectRadioButton(driver,driver.findElement(By.cssSelector("div#con")), 0); System.out.println("Thread done"); } }.start(); //Main thread switch window SeleniumUtils.switchToAnotherWindow(driver); log.info(driver.getPageSource()); log.info("switch done"); driver.close(); driver.switchTo().window(parentWindowID); SeleniumUtils.sleepInSeconds(2); driver.switchTo().frame(driver.findElement(By.cssSelector("iframe#fancybox-frame"))); Assert.assertTrue(SeleniumUtils.isTextPresent(driver, "Are you a returning official?"));