如何在任何选择器的selenium findElements()方法中使用OR Condition?

时间:2011-03-19 12:57:09

标签: selenium css-selectors webdriver

我希望获得所有类别名称为“act”或“dact”的WebElement信息

我使用下面的代码行来获取“act”的所有类信息。任何人都可以帮我在班级名称中使用OR条件吗?

List<WebElement> nL2 = driver.findElements(By.className("act"));

类似于此的东西;所以我不必为每个班级写两个单独的行。

//this is not working

List<WebElement> nL2 = driver.findElements(By.className("act | dact"));

谢谢!

2 个答案:

答案 0 :(得分:8)

你能把两个名单合并吗?

List<WebElement> act = driver.findElements(By.className("act"));
List<WebElement> dact = driver.findElements(By.className("dact"));
List<WebElement> all = new ArrayList<WebElement>();
all.addAll(act);
all.addAll(dact);

或者,您可以使用@Alejandro

建议的xpath定位器
List<WebElement> all = driver.findElements(By.xpath("//*[@class='act' or @class='dact']"));

答案 1 :(得分:4)

我知道这个问题很老但是最简单的方法就是使用CSS选择器,比如

driver.findElements(By.cssSelector(".act, .dact"));

你应该更喜欢CSS选择器到XPath,因为浏览器支持更好,性能更高(我认为它们更容易学习/理解)。 CSS选择器可以做任何事情By.className()可以加上更多。它们非常强大且非常有用。

一些CSS选择器引用可以帮助您入门。

W3C CSS Selector Reference

Sauce Labs CSS Selector Tips