如何在Selenium中收听CSS更改?

问题描述 投票:5回答:1

我有一个div是一个保存按钮,有一个很棒的字体符号。单击div后,会添加一个新的CSS类disabled,其中不透明度会降低,以便在视觉上指示单击按钮。在save事件之后,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中无法进行线程等待。

java html css selenium
1个回答
1
投票

Selenium不是太慢(至少在这种情况下),但CSS参数错误:

带有一个空格的".save-button .disabled"意味着层次结构中的两个元素(<div class="save-button"><div class="disabled"/></div>,而".save-button.disabled"本来是正确的,并且确实有效。

我首先没有注意到,因为Chrome检查器不是那么紧,并且发现了具有理论错误参数的div。

编辑:正如JeffC的评论中所提到的,检查员将元素与错误参数匹配的细节不可能是真的。我使用此页面中的注释div验证了它,并且检查器在这里不匹配。见下面的截图。我的Selenium测试现在正在进行中,我不会进一步分析。

screenshot of inspector with this page

© www.soinside.com 2019 - 2024. All rights reserved.