gpt4 book ai didi

java - Selenium RemoteWebDriver 中的批量/原子操作?

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

查看RemoteWebDriver的源代码,每个操作,包括获取刚刚获得的WebElement的文本,都需要向浏览器发送一个单独的命令。我担心在高度动态的 Javascript Web 应用程序中,这可能会导致不一致的读取/随机异常。

谁能解释一下 Selenium 调用如何与页面上的 JavaScript 事件队列同步?如果它们不同步,除了嵌入大块自定义 JavaScript 之外,还有什么方法可以在批处理/事务/原子操作中执行多个 Selenium 调用?

最佳答案

Selenium 不提供任何设施来确保任何单个 Selenium 操作以原子方式完成,或者多个操作作为单个原子事务的一部分执行。例如,如果在 Selenium 单击元素时要单击的元素发生移动,则单击操作可能会失败。

是的,这可能会导致问题。您可以自行编写代码,以便它可以从不良情况下恢复。您需要知道您正在与之交互的是什么并且:

  1. 等待表明 UI 稳定的情况。例如,我有 Datatables某些页面上的表格。在测试表是否包含正确信息之前,我检查的一件事是确保更新表时数据表自动弹出的小横幅不可见。否则,我可能正在检查尚未更新且仍包含旧数据的表。

  2. 检测不良状态并恢复。在一种情况下,我想单击 UI 部分中的一个按钮,该按钮会根据各种条件进行刷新。我在刷新之前还是之后单击按钮并不重要,但问题是,如果在我获取按钮的时间和我尝试单击它的时间之间发生刷新,Selenium 将引发 StaleElementReferenceException 。我必须捕获此异常,重新获取按钮并尝试再次单击它。 (郑重声明,在这种情况下,在点击之前测试 UI 是不值得的。99.999% 的情况下,无需再次尝试即可完成点击。)

关于java - Selenium RemoteWebDriver 中的批量/原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408841/

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