selenium - 在 Selenium-ChomeDriver/Chome 正确单击元素之前需要等待(ChromeDriver v 77 & 78,Chome v 78)
问题描述
如标题所述,自 chrome 更新到 v78 后出现以下问题。在 chrome v78 之前,所有测试都运行良好。
这种行为是高度不确定的,所以请多多包涵。这意味着有时它只是突然起作用,没有任何变化。测试中的大多数点击都有效。只是有些反复失败(大部分时间)。
我们正在使用 selenium 和 chrome 78 的最新驱动程序。问题首先出现在运行 chrome 78 的驱动程序版本 77 上。规范流测试和适配器代码都没有发生任何变化,但是在 Chrome 更新之后,基本上所有测试都失败了。
在每次点击之前执行 Thread.Wait(1000) 似乎是避免问题的最可靠方法,并按要求点击元素。
当我不等待时,驱动程序会运行“单击”,包括下面列出的步骤,而不会实际单击或抛出任何错误。
- 元素查找:
new WebDriverWait(this.webDriver, this.WaitTimeout).Until<IWebElement>(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(by))
- 等待元素可点击:
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(by));
- 向元素滚动:
((IJavaScriptExecutor) this.webDriver).ExecuteScript("window.scrollTo(0, " + (object) (e.Location.Y - 250) + ")");
- 并对元素执行单击和释放操作:
action.Click(element).Perform()
我还尝试了其他几种鼠标点击变体,包括评论中的一种。
由于该过程只是完成了所有这一切,而实际上并没有引发任何类型的错误或警告,因此我无法检查点击是否实际发生(除了检查当前 URL,这将是在测试中维护的噩梦) .
所以网站没有更新并保留在源页面上,测试将失败,因为下一个测试没有在预期的页面上运行。
现在的问题:
有什么我可以查询或等待以查看驱动程序或 chrome 是否可以实际单击该元素(真的)或验证它是否实际被单击?
原始问题报告: https ://github.com/jsakamoto/nupkg-selenium-webdriver-chromedriver/issues/66
解决方案
推荐阅读
- linux - 将变量传递给 BASH 函数时出现“找不到命令”,我是否引用不正确?
- android - Kotlin 将视频保存到图库
- anaconda - 创建 requirements.txt 文件以获取 MyBinder 链接以与 Github 共享
- ruby-on-rails - ArgumentError(不支持的参数类型:0(整数)):
- python - 想要使用 python 查找批量域的域年龄
- reactjs - 添加总价以反应购物车
- jquery - 单击搜索后,发送过滤器查询并在另一个页面上发布过滤器结果
- python - 'clientname' 对象没有属性 'set_password'
- elasticsearch - 用于弹性搜索的自定义令牌过滤器
- firebase - 无头 cms 修改数据库时生成站点