加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 无法执行Selenium异步脚本

发布时间:2020-12-14 05:13:03 所属栏目:Java 来源:网络整理
导读:为什么在尝试执行异步脚本时会收到硒2.25.0的异常. //navigate to my test page.String script = "var callback = arguments[arguments.length - 1];" + "getResult(callback)";Object result = ((JavascriptExecutor)driver).executeAsyncScript(script,"")
为什么在尝试执行异步脚本时会收到硒2.25.0的异常.
//navigate to my test page.

String script = "var callback = arguments[arguments.length - 1];"  +
                "getResult(callback)";

Object result = ((JavascriptExecutor)driver).executeAsyncScript(script,"");

System.out.println(result);

测试页面包含以下脚本:

var result = true;
function getResult(callback){
    window.setTimeout(function(){callback(true);},3000);
}

这引发了一个例外:

FAILED: testSeleniumAsync
org.openqa.selenium.TimeoutException: Script execution failed. Script: var callback = arguments[arguments.length - 1];getResult(callback);
 Timed out waiting for asyncrhonous script result after 2 ms (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 11 milliseconds
Build info: version: '2.25.0',revision: '17482',time: '2012-07-18 22:18:01'
System info: os.name: 'Linux',os.arch: 'amd64',os.version: '3.2.0-27-generic',java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
Session ID: 6347b507cf22b6c2d3312937a82a0a02
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

如果我从我的脚本中删除setTimeout,并且我调用回调,它可以工作.但这不是我想要的.

谢谢.

解决方法

它非常奇怪,API在2 ms内超时.

我猜测脚本超时是以某种方式配置不正确(< = 0sec).由于您的窗口超时发生在3秒钟之后,请尝试将脚本超时设置为大于3秒的值,然后再进行通话. 像这样:

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

这可能会起作用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读