首页 > 解决方案 > 是否可以在 Selenium 3 中检查 HTML5 伪类,例如 :invalid 或 :valid?

问题描述

例如这个简单的 HTML5 表单https://demoqa.com/automation-practice-form

点击提交,则driver.findElement(By.id("firstName")).getAttribute("class")不会返回“:invalid”。

没有 JavaScript 调用就不可能吗?

截屏

标签: seleniumpseudo-class

解决方案


可能使用 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"));

推荐阅读