Selenium JS等待行为疑问:嵌套等待总时长为2秒还是4秒?
代码等待时间分析
嘿,我来帮你拆解这段WebDriver等待代码的时间逻辑哈!
先把你的代码贴出来方便分析:
const seconds = 2 * 1000; await browser.wait(until.elementLocated(byElement), seconds) .then(() => { const element = browser.findElement(args.field); browser.wait(until.elementIsVisible(element, seconds)) })
等待逻辑拆解
第一阶段等待:
browser.wait(until.elementLocated(byElement), seconds)
这一步会最多等待2秒,直到目标元素被DOM定位到。如果在2秒内成功找到元素,就会进入后续的then回调;如果2秒超时还没找到元素,会直接抛出超时错误,后面的等待逻辑不会执行。第二阶段等待:
browser.wait(until.elementIsVisible(element, seconds))
当第一阶段成功完成后,这一步又会最多等待2秒,直到已经定位到的元素变得可见。同样,如果2秒内元素变为可见,等待就结束;超时的话也会抛出错误。
总等待时间结论
这段代码的最长总等待时间是2秒+2秒=4秒,不是总共只等待2秒。当然,如果两个阶段都很快完成(比如第一阶段1秒找到元素,第二阶段1秒确认可见),实际总等待时间会远小于4秒,但超时上限是4秒。
内容的提问来源于stack exchange,提问作者Romario Lopez C
相关产品推荐
相关产品推荐

