带角覆盖的量角器/硒,其他元素会收到点击

Posted

技术标签:

【中文标题】带角覆盖的量角器/硒,其他元素会收到点击【英文标题】:Protractor/Selenium with Angular overlay, other element would receive click 【发布时间】:2015-12-30 03:15:15 【问题描述】:

我们的应用程序有一个始终在 dom 中的角度叠加层(尽管并不总是可见)。有时当我尝试单击页面上的元素时,Selenium 会抛出一个错误...

元素在点 (544, 297) 处不可点击。其他元素会 收到点击:div class="overlay" style="transition-property: 不透明度; -webkit-transition-property:不透明度;过渡时间: 300毫秒; -webkit-transition-duration:300ms;过渡定时功能: 轻松进出; -webkit-transition-timing-function:缓入出局;展示: 堵塞;不透明度:0;">

还有其他人经历过吗? webdriver .isDisplayed 总是报告它是假的,即使它仍然禁止点击。

我已经编写了一些附加到量角器的 waitForAngular 函数的代码,该函数检查覆盖层的 dom 元素的各种状态(等到它具有值为“none”的 display: 属性)。这很有帮助,除非浏览器在后台执行,否则我不再遇到此问题。如果浏览器不在前台,那么我会经常遇到覆盖问题。当量角器在等待时(基于我等待角度覆盖),如果我将浏览器带到前台,那么测试会立即开始继续执行,并且覆盖层的 dom 状态会发生变化。

希望有见识的人提出任何想法。

我认为 .isDisplayed 无法正常工作似乎是网络驱动程序问题。而且我还假设叠加层在后台被卡在特定的 dom 状态是一个角度问题。

【问题讨论】:

消除过渡所花费的时间有什么不同吗? 我遇到了类似的问题。你有想过解决办法吗? 【参考方案1】:

根据你的 css 属性,你的元素有 opacity: 0;

根据这个答案here,带有opacity: 0 的元素仍会接收事件,因此您的叠加层并未完全隐藏。

我建议您使用其他 css 属性来隐藏您的叠加层,例如 visibility: hiddendisplay:none;

【讨论】:

您认为这样可以解决在脚本运行时覆盖在后台正常运行的问题吗?感谢您的回复。 我不明白你的意思。您是否尝试将其更改为显示:无 这没有回答问题。该问题询问的是覆盖

以上是关于带角覆盖的量角器/硒,其他元素会收到点击的主要内容,如果未能解决你的问题,请参考以下文章

失败:元素不可交互:量角器/硒自动化(ElementNotVisibleException)

元素 MyElement 在点 (x, y) 处不可点击...其他元素将收到点击

Selenium:元素不可点击...其他元素会收到点击

元素在点不可点击。其他元素会收到点击:

如何选择硒元素[不断变化的元素

WebdriverIO browser.click 给出错误“其他元素会收到点击”。我该如何解决?