【发布时间】:2019-02-07 15:23:06
【问题描述】:
我有一个 div,它是一个保存按钮,有一个很棒的字体符号。单击 div 后,将添加一个新的 CSS 类 disabled,其中不透明度降低以直观地表示单击按钮。在保存事件之后,disabled CSS 类再次被删除,按钮再次完全可见。如果我尝试通过 Selenium 天真地验证这一点,则添加 CSS 类和删除对于 Selenium 来说太快了,即
driver.findElement(By.cssSelector(".save-button")).click();
正在工作并找到该按钮并单击它,但下一个查找会抛出 NoSuchElementException:
driver.findElement(By.cssSelector(".save-button .disabled"));
它也不适用于显式等待(为了简化,我没有提到)。 Selenium 太慢而无法识别更改,即在第二次查找开始之前删除了 CSS 类。我是否需要在点击事件之前启动监听器之类的东西,也许是通过 Selenium 的 JavaScript 解决方案?还有其他方法吗?看起来在 Selenium 中不可能先线程等待。
【问题讨论】:
-
也许
WebDriverEventListener可以工作?但我不知道应该使用哪种方法来更改 CSS... -
你是说等待 (
WebDriverWait) 的可见性然后By.cssSelector(".save-button .disabled")的不可见性不起作用吗?您提到了不透明度更改...您是否尝试过等待?意图是什么?为什么你不能等待最终产品?一定要检测中间体吗? -
@JeffC 是的,问题在于断言变化确实发生了。我们遇到了保存按钮单击不成功的问题,但没有引发 selenium 异常(例如 Stale)。我们没有其他机会,只能识别这个非常短的 CSS 更改,以确保点击发生并且我们不会重复点击事件......