selenium - 是否可以在 Selenium 3 中检查 HTML5 伪类,例如 :invalid 或 :valid?
问题描述
例如这个简单的 HTML5 表单https://demoqa.com/automation-practice-form
点击提交,则driver.findElement(By.id("firstName")).getAttribute("class")
不会返回“:invalid”。
没有 JavaScript 调用就不可能吗?
解决方案
可能使用 javascript 执行器:http: //infiautomation.blogspot.com/2019/07/working-with-pseudo-elements-in.html
String script = "return window.getComputedStyle(document.querySelector('#test_ID'),':invalid').getPropertyValue('border-color')";
JavascriptExecutor js = (JavascriptExecutor)driver;
String content = (String) js.executeScript(script);
System.out.println(content);
它实际上是在检查样式而不是属性伪类是否存在。很像这里的答案: https ://stackoverflow.com/a/53868324/1387701
var el = document.querySelector('#elt'),
pseudo = window.getComputedStyle(el, ':before');
alert(pseudo.getPropertyValue("content"));
推荐阅读
- python - 从 pytest 夹具中的内部函数访问值
- javascript - 为什么这个功能在 Safari 中不起作用?(在 Chrome 中工作正常)
- python-3.x - BERT 文档嵌入
- c# - 从没有承载前缀的授权标头中获取访问令牌
- kubernetes - 为什么 LoadBalancer 服务仍在等待中?
- java - 有没有更好的替代方案或方法来改进代码?
- tensorflow - 为 Tensorflow 2.2 加载 Keras 2.4.3 时出错
- html - Angular 将 html 绑定到 div 而不使用 iframe
- sql - vscode 在正确时将 sql 类型的语法错误视为错误 [已解决]
- javascript - 2 useState 中的一个 useEffect 一个有效,另一个无效,即使它们几乎相同