我尝试练习处理Javascript警报。我想接受来自w3school网站iframe的警报。
WebDriver driver = new ChromeDriver();
driver.get("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert");
driver.switchTo().frame("iframeResult");
driver.findElement(By.xpath("/html/body/button")).click();
WebElement editable = driver.switchTo().activeElement();
editable.sendKeys("enter");
//handle pop alert
String mainPage = driver.getWindowHandle();
Alert alt = driver.switchTo().alert();
alt.accept();
driver.switchTo().window(mainPage);
我只是得到警告框然后低于错误。我无法接受。 线程“main”中的异常org.openqa.selenium.UnhandledAlertException:意外警报打开:{警告文本:我是一个警告框!}
答案 0 :(得分:1)
您拥有所有正确的代码。当您尝试执行除警报启动后处理警报之外的其他操作时,会出现此错误。您有一些无关的代码来处理警报。我在下面的代码中删除了它。您可以添加内容,但需要在启动警报之前或之后添加它们并进行处理。
WebDriver driver = new ChromeDriver();
driver.get("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert");
driver.switchTo().frame("iframeResult");
driver.findElement(By.xpath("/html/body/button")).click(); // this launches the alert
driver.switchTo().alert().accept(); // this one line accepts the alert
driver.switchTo().defaultContent(); // you will probably need to switch back out of the IFRAME at some point to access the main page again so I added this line
我强烈建议您阅读一些有关您选择的IDE中的调试指南。如果您学会了如何调试代码,那么您可以逐步了解它,更有可能看到问题所在并修复它。