使用Selenium 2处理iframe中的javascript警报

时间:2016-06-29 18:32:37

标签: selenium iframe

我尝试练习处理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:意外警报打开:{警告文本:我是一个警告框!}

1 个答案:

答案 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中的调试指南。如果您学会了如何调试代码,那么您可以逐步了解它,更有可能看到问题所在并修复它。