【发布时间】:2020-08-03 17:01:21
【问题描述】:
我们有一个使用 BrowserStack 运行的自动化 UI 测试,它在等待将元素添加到 DOM 时偶尔会超时,但在本地运行时,测试的成功率是 100%。
这是一个失败的 selenium 等待示例:
return WebDriverWait(self.__driver, 10).until(
ec.presence_of_element_located((By.XPATH, locator))
)
有没有其他人看到任何与 BrowserStack 类似的不一致并知道可能导致它的原因,是否有更好的方法来等待元素可用。
我们得到的确切exption是来自ec.presence_of_element_located((By.XPATH, locator))的TimeoutException。
【问题讨论】:
-
您的 Web 应用程序托管在哪里?是内部服务器还是云? ... 可能看起来很明显,但您是否尝试过增加超时时间?
-
该应用程序托管在云服务上,BrowserStack 能够毫无问题地访问该站点。将超时时间增加到 40 秒会减少失败,但仍然不可靠。使用 ChromeDriver 在本地测试总是成功。
-
您是否在 browserstack 中并行运行? - 在本地运行通常是单线程,但是当您并行执行操作时,可能会出现数据重叠。 (我知道这些是悬而未决的问题 - 但没有简单的答案,它是梳理本地 i7 机器与需要尽可能便宜和高效的远程虚拟机之间的区别的信息):-)
-
不,没有任何并行运行的东西,这是我们考虑在未来添加的一件事,但目前,一切都是单线程的。不过谢谢,这是个好主意!
标签: python python-3.x selenium selenium-webdriver browserstack