aur*_*ius 23 css java selenium webdriver selenium-webdriver
如何检查selenium web元素是否包含特定的css类.
我有这个html li元素
<li class="list-group-item ng-scope active" ng-repeat="report in lineageController.reports" ng-click="lineageController.activate(report)" ng-class="{active : lineageController.active == report}">
Run Code Online (Sandbox Code Playgroud)
正如您在class属性中看到的那样,有一个活动类.
我的问题是我有这个元素,我想根据类属性是否具有其他的"活动"值进行检查,然后使用xpath更优雅的解决方案.
我怎样才能做到这一点?
drk*_*hng 30
鉴于您已找到您的元素并且您想要检查class-attribute中的某个类:
public boolean hasClass(WebElement element) {
String classes = element.getAttribute("class");
for (String c : classes.split(" ")) {
if (c.equals(theClassYouAreSearching)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
正如@aurelius正确指出的那样,有一种更简单的方法(效果不是很好):
public boolean elementHasClass(WebElement element, String active) {
return element.getAttribute("class").contains(active);
}
Run Code Online (Sandbox Code Playgroud)
这种方法看起来更简单,但有一个重要的警告:
正如@JuanMendes所指出的,如果您要搜索的类名是其他类名的子字符串,则会遇到问题:
例如class ="test-a test-b",搜索class.contains("test")将返回true但它应该为false
@drkthng提供的答案有效,但您可能会遇到类名是另一个类名的子集的情况.例如:
<li class="list-group-item ng-scope active">text</li>
Run Code Online (Sandbox Code Playgroud)
如果你想找到班级"项目",那么提供的答案会给出误报.您可能想尝试这样的事情:
public boolean hasClass(WebElement element, String htmlClass) {
String classes = element.getAttribute("class").split("\\s+");
if (classes != null) {
for (String classAttr: classes) {
if (classAttr.equals(htmlClass)) {
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41541 次 |
最近记录: |