【问题标题】:Protractor/Selenium with Angular overlay, other element would receive click带角覆盖的量角器/硒,其他元素会收到点击
【发布时间】:2023-03-17 09:58:01
【问题描述】:

我们的应用程序有一个始终在 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 状态是一个角度问题。

【问题讨论】:

  • 消除过渡所花费的时间有什么不同吗?
  • 我遇到了类似的问题。你有想过解决办法吗?

标签: javascript angularjs selenium selenium-webdriver protractor


【解决方案1】:

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

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

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

【讨论】:

  • 您认为这样可以解决在脚本运行时覆盖在后台正常运行的问题吗?感谢您的回复。
  • 我不明白你的意思。您是否尝试将其更改为显示:无
  • 这没有回答问题。该问题询问的是覆盖
猜你喜欢
  • 2017-04-02
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 2016-06-08
  • 2018-11-07
  • 2016-12-19
  • 2018-03-16
相关资源
最近更新 更多