Selenium 2为特定命令设置超时

时间:2011-11-24 08:37:44

标签: java timeout selenium-webdriver

我有一个命令webDriver.switchTo().alert();,它有一个超时并等待它发现一个警报或经过的时间大于超时值。我想减少这个特定命令的超时,但没有找到办法。我该怎么办?

如果可能的话,我想将超时设置为零,但在alert命令之后又恢复为默认值。

更新

这是Selenium的核心功能,我按如下方式使用它:

    try {
        // TODO PERFORMANCE PROBLEM BECAUSE OF TIMEOUT IF NO ALERT EXISTS
        Alert alert = webDriver.switchTo().alert();

        // check if alert exists
        if(alert != null) {
            String alertText = alert.getText();

            // TODO alert handling
            log.info("Alert detected: {}", alertText);
        }
    } catch (Exception e) {
        // timeout if alert does not exist
    }

1 个答案:

答案 0 :(得分:1)

如果没有看到包装该方法调用的类,我将不得不猜测。我的猜测是你在等待警报或其他一些阻塞的功能,直到页面加载完成或文档完成之前。因此无论阻止脚本是什么,都应该通过在调试中运行应用程序并逐步执行这些方法来验证。如果你想发布更多代码,那么我可以帮助你更好。

--------编辑----------

您能够做到这一点的唯一方法是在Selenium命名空间中扩展Alert类。因为即时失败而超载它,我猜它正在使用某种形式的javascript切换到警报,你应该能够在第一次尝试时指定失败。我无法给你任何具体的代码,因为我找不到Alert类的源代码。