java - 如何收听 Selenium 中的 CSS 变化?
问题描述
我有一个 div,它是一个保存按钮,有一个很棒的字体符号。单击 div 后,将添加一个新的 CSS 类disabled
,其中不透明度降低,以直观地表示单击按钮。在保存事件之后,disabled
CSS 类再次被删除,按钮再次完全可见。如果我尝试通过 Selenium 天真地验证这一点,则添加 CSS 类和删除对于 Selenium 来说太快了,即
driver.findElement(By.cssSelector(".save-button")).click();
正在工作并找到按钮并单击它,但下一个 find 会抛出NoSuchElementException
:
driver.findElement(By.cssSelector(".save-button .disabled"));
它也不适用于显式等待(为了简化,我没有提到)。Selenium 太慢而无法识别更改,即在第二次查找开始之前删除了 CSS 类。我是否需要在点击事件之前启动监听器之类的东西,也许是通过 Selenium 的 JavaScript 解决方案?还有其他方法吗?看起来在 Selenium 中不可能进行线程等待。
解决方案
Selenium 并不太慢(至少在这种情况下),但 CSS 参数是错误的:
".save-button .disabled"
一个空格意味着层次结构中的两个元素(<div class="save-button"><div class="disabled"/></div>
而".save-button.disabled"
本来是正确的并且确实有效。
我一开始没有注意到,因为 Chrome 检查器不是那么严格,并且发现 div 具有这个理论上错误的参数。
编辑:正如 JeffC 的评论中提到的那样,检查员将元素与错误参数匹配的细节不可能是真的。我用这个页面的评论 div 验证了它,检查器在这里不匹配。请参阅下面的屏幕截图。由于我的 Selenium 测试正在运行,因此我不会对此进行进一步分析。
推荐阅读
- javascript - 安全用户认证脚本电子
- jenkins - yaml 键中的特殊图表:管道实用程序步骤
- java - 如何修复强化区域设置相关比较问题
- python-3.x - 在循环中附加到 numpy 数组
- python - 模块安装如何在 Python 中工作?
- mysql - MySQL累积和查询未返回预期结果
- sql-server - SSIS - 如果源数据集中的任何行缺少值,则失败?
- python-3.x - 将多个参数传递给python脚本抛出'str'对象是不可调用的错误
- amazon-s3 - 存储到 S3 时重命名存档
- video - 获取 ffmpeg 报告的错误的(估计)时间偏移量