我试图验证文本“提供的信息无效或不完整”在Java中使用Selenium/WebDriver显示。
我有以下HTML:
<div id="validationError">
<ul>
<li>Required: Server Name</li>
<li>Required: Receiving Port</li>
</ul>
</div>
使用以下CSS代码:
#validationError:before {
content: 'The information provided is either invalid or incomplete.';
}
以下是我当前的java代码:
WebElement errorBox = browser.findElement(By.id("validationError"));
Assert.assertNotNull("Could not find validation errors", errorBox);
System.out.println("Error Explanation: " + error.getCssValue("content") + "\n");
List<WebElement> errorList = errorBox.findElements(By.tagName("li"));
for (WebElement error : errorList) {
System.out.println("Error: " + error.getText());
}
System.out.println("\nError Full Text: " + errorBox.getText());
这是我对上述代码的输出:
Error Explanation:
Error: Required: Server Name
Error: Required: Receiving Port
Error Full Text: Required: Server Name
Required: Receiving Port
我似乎找不到一种方法来验证文本“提供的信息要么无效要么不完整。”显示。在web元素上调用getText()
也不会返回预期的字符串,但会显示该div中的任何其他正常文本。有什么想法吗?
我也试过,对我有用。
已创建示例html文件:
<!DOCTYPE html>
<html>
<head>
<style>
p::after {
content: " - Remember this";
}
</style>
</head>
<body>
<p id='b'>My name is Donald</p>
<p>I live in Ducksburg</p>
</body>
</html>
重复使用Nilesh的代码
String script = "return window.getComputedStyle(document.querySelector('p#b'), ':after').getPropertyValue('content')";
JavascriptExecutor js = (JavascriptExecutor) UIKeyWords.getUIDriver();
String contentValue = (String) js.executeScript(script);
System.out.println(contentValue);
我不能100%确定WebDriver是否可以为您检索伪元素内容。我认为你需要使用Javascript。下面是我测试的作品。
String script = "return window.getComputedStyle(document.querySelector('#validationError'),':before').getPropertyValue('content')";
JavascriptExecutor js = (JavascriptExecutor)driver;
String content = (String) js.executeScript(script);
System.out.println(content);
这应该能打印出来
The information provided is either invalid or incomplete.
问题内容: 在以下情况下,为什么:after选择器需要content属性才能起作用? 请注意,直到您指定content属性,您才看不到伪元素: 为什么这是预期的功能?您可能会认为显示块将迫使该元素显示出来。奇怪的是,您实际上可以在Web调试器中看到样式。但是,它们不会显示在页面上。 问题答案: 以下是各种W3C规范和草案的参考: 选择器级别3 伪元素’:before’和’:after’可用于在元素
问题内容: 在检查Chrome Dev工具时,我注意到以下CSS片段: 可以在Chrome中完美运行(请参见下面的屏幕截图)。 这使我可以通过CSS定义标签的src属性。在Firefox中不起作用。到目前为止,我认为不可能通过CSS直接修改src属性,而且我还没有发现有人在谈论这一点。 那么,这仅仅是Chrome中的专有功能,还是Chrome正在实施W3C草案或其他我不知道的类似产品? 问题答案:
问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据。 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或Node.outerHtml()方法 示例: String html =
问题内容: 我想: 查找页面中所有元素的样式属性(例如:具有的所有元素) 更改所有属性(例如从到)。 您对此有何建议? 问题答案: 我的建议是尽可能避免这样做。而是使用类来分配颜色值,然后可以使用该类而不是颜色值来查找元素。 据我所知,没有可用于查询 特定 样式值的选择器(即使在CSS3中也是如此),这意味着循环遍历所有元素(或者看起来可以将其限制为具有属性的所有元素)并看着财产。现在,问题是,即
问题内容: 如何将伪元素选择器()与属性选择器()组合在一起? 我尝试使用,但这在Chrome中不起作用。 HTML: CSS: 在每个div的末尾显示“ YES”,第二个div之后应显示“ NO”。 我正在运行Chrome 17.0.963.38。在Safari 5.1.2中似乎可以正常工作。 问题答案: 这看起来像个错误,终于被报道了。如果您为样式表中的任何位置 添加CSS规则并至少包含一个声
本文向大家介绍jQuery修改CSS伪元素属性的方法,包括了jQuery修改CSS伪元素属性的方法的使用技巧和注意事项,需要的朋友参考一下 CSS伪元素(pseudo elements)不是DOM元素,因此你无法直接选择到它们。 假设有如下HTML代码: 和CSS代码: 现在你想在某个元素的click事件中动态的把techbrood:before的width属性设置为100%, 有两个方法,一个是