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

Ove*_*TAR 7 selenium webdriver css-selectors

我想获取所有具有类名"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"));

谢谢!

Dav*_*unt 9

你能把两个名单合并吗?

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);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用@Alejandro建议的xpath定位器

List<WebElement> all = driver.findElements(By.xpath("//*[@class='act' or @class='dact']"));
Run Code Online (Sandbox Code Playgroud)


Jef*_*ffC 6

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

driver.findElements(By.cssSelector(".act, .dact"));
Run Code Online (Sandbox Code Playgroud)

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

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

W3C CSS选择器参考

酱汁实验室CSS选择器提示