gpt4 book ai didi

javascript - 什么时候应该使用setScriptTimeout?

转载 作者:行者123 更新时间:2023-12-03 10:15:15 25 4
gpt4 key购买 nike

在 Selenium WebDriver 中,有一种方法 setScriptTimeout(time, unit)。如果我们看一下它的描述,它是

设置在引发错误之前等待异步脚本完成执行的时间。如果超时为负数,则脚本将被允许无限期运行。

我有两个问题 -

  1. 我很困惑何时应该使用它。如果有人用一个例子来解释它,那将会非常有帮助
  2. 如果我为setScriptTimeout设置了一些时间,那么在执行每个Selenium命令(例如查找元素、单击它等)之前,它是否会等待指定的时间让页面的所有javascript完成其执行?

最佳答案

setScriptTimeout 唯一做的就是修改 Selenium 等待调用 executeAsyncScript 的时间。回来。因此,如果您使用executeAsyncScript,并且您想要设置一个限制,超出该限制,如果脚本不调用其回调,您将声明该脚本已死亡,则可以使用它。为了适应文档中的示例之一,如果您想要运行 XMLHttpRequest 并确定如果花费时间超过 10 秒,则测试失败,那么:

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

Object response = ((JavascriptExecutor) driver).executeAsyncScript(
"var callback = arguments[arguments.length - 1];" +
"var xhr = new XMLHttpRequest();" +
"xhr.open('GET', '/resource/data.json', true);" +
"xhr.onreadystatechange = function() {" +
" if (xhr.readyState == 4) {" +
" callback(xhr.responseText);" +
" }" +
"}" +
"xhr.send();");

如果传递给 executeAsyncScript 的脚本在 10 秒内未调用 callback,Selenium 将引发超时。

它特别不会影响 Selenium 等待页面加载的时间。它与页面自行执行的任何异步代码也没有任何关系。

关于javascript - 什么时候应该使用setScriptTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com