【问题标题】:Unable to execute Selenium asynchronous script无法执行 Selenium 异步脚本
【发布时间】:2012-07-25 09:23:11
【问题描述】:

为什么我在尝试执行异步脚本时遇到 selenium 2.25.0 异常。

//导航到我的测试页面。 字符串脚本=“var回调=参数[arguments.length - 1];” + "getResult(回调)"; 对象结果 = ((JavascriptExecutor)driver).executeAsyncScript(script, ""); System.out.println(结果);

测试页面包含以下脚本:

变量结果=真; 函数获取结果(回调){ window.setTimeout(function(){callback(true);}, 3000); }

这会引发异常:

失败:testSeleniumAsync org.openqa.selenium.TimeoutException:脚本执行失败。脚本: var callback = arguments[arguments.length - 1];getResult(callback); 2 毫秒后等待异步脚本结果超时(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:11 毫秒 构建信息:版本:'2.25.0',修订:'17482',时间:'2012-07-18 22:18:01' 系统信息:os.name:'Linux',os.arch:'amd64',os.version:'3.2.0-27-generic',java.version:'1.6.0_26' 驱动程序信息:driver.version:RemoteWebDriver 会话 ID:6347b507cf22b6c2d3312937a82a0a02 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

如果我从脚本中删除 setTimeout 并调用回调,它会起作用。但这不是我想要的。

谢谢。

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    API 会在 2 毫秒内超时,这很奇怪。

    我猜测脚本超时配置不正确(

    像这样:

    driver.manage().timeouts().setScriptTimeout(5, TimeUnit.SECONDS);
    

    这可能行得通。

    【讨论】:

    • 让我添加一些我认为是常见陷阱的东西,((JavascriptExecutor)driver).executeAsyncScript(script, ""); // 将立即返回。
    • @redsonic +1 任何一天。但在这种情况下,OP 正在调用回调。
    • 我在量角器中遇到了同样的问题,我该如何配置它?我做了 browser.manage().timeouts().setScriptTimeout(60000);但我有同样的错误!
    • @AshwinPrabhu,我在 perl selenium 中遇到了同样的问题。我尝试添加 $driver->set_async_script_timeout(1000);在调用 $driver->execute_async_script 方法之前,但它仍然给我错误。请帮忙!
    • executeAsyncScript() 的文档说“要执行的脚本的默认超时为 0 毫秒。在大多数情况下,包括下面的示例,必须设置脚本超时 WebDriver.Timeouts.setScriptTimeout(java. time.Duration) 预先设置为足够大的值。”
    猜你喜欢
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多