未处理浏览器警报会导致异常

时间:2016-09-20 14:43:16

标签: groovy geb

我正在尝试在Chrome上处理意外的浏览器提醒(用于将所需字段留空)并且之前获得加载状态的例外,一旦我将Chrome驱动程序更改为2.24就解决了 现在我正在使用此代码段接受警报并通过页面

public void loginAlert() {
        try{
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        }
        catch (org.openqa.selenium.UnhandledAlertException e) {
            Alert alert = driver.switchTo().alert();
            String alertText = alert.getText().trim();
            System.out.println("Alert data: "+ alertText);
            alert.dismiss();}
    }

在我期望此警报的页面上定义,同时在同一页面上定义了单击以调用此警报的按钮。

现在,我的测试就是我拥有的

at XXXXPage
classname.WaitForPageLoad()
Button.click()
loginAlert()

但这是一个例外,我花了很多时间试图解决它,最后想要求帮助!

无法使用类'org.openqa.selenium.remote.RemoteWebDriver $ RemoteAlert'将对象'org.openqa.selenium.remote.RemoteWebDriver$RemoteAlert@7277051'转换为类'javafx.scene.control.Alert' org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法使用类'org.openqa.selenium.remote.RemoteWebDriver $ RemoteAlert'将对象'org.openqa.selenium.remote.RemoteWebDriver$RemoteAlert@7277051'转换为类'javafx。 scene.control.Alert”     在Pages.OperatorLoginPage.loginAlert(OperatorLoginPage.groovy:93)

此外,当我查看Geb拍摄的屏幕截图时,即使在显示警报弹出窗口之前就会出现此异常,因为警报未在失败的步骤中显示,并且如果我监视屏幕,它就永远不会出现测试运行时。

1 个答案:

答案 0 :(得分:1)

您似乎已将javafx.scene.control.Alert导入到您的类文件中(我假设您在IDE中过快,并接受它给您的第一个建议)

另外,为什么不使用Geb mechanism for alert handling