0

我需要在包装器 div 中获取具有类的所有元素。我以前用 php 做过这个,css 选择器看起来像这样:

$this->elements($this->using('css selector')->value('div.active tr[class="theRow"]'));

现在这将使我在包装器中的所有 foo 元素都处于活动状态,但我不知道如何使用 Java 来做到这一点。我想要一个包含所有 webElements 的列表,如下所示:

List<WebElement> list = driver.findElements(By.cssSelector(".active,.theRow"));

然而,这会给我所有的 theRow 元素,甚至那些在活动包装器之外的元素。有什么建议吗?

下面的代码还按预期提供了所有 theRow 元素:

List<WebElement> list = driver.findElements(By.className("theRow"));    

但这给了我一个空列表

List<WebElement> list = driver.findElements(By.cssSelector("tr[class='row-hover']"));       
4

1 回答 1

2

跨度的类属性是否有可能包含多个值?

如果是这样,那么您可能会在使用 'class=' 时遇到问题,因为它不会匹配具有两个或更多类的元素。

如果是这样,那么试试这个;

List<WebElement> list = driver.findElements(By.cssSelector("div.active span.foo"));

当我访问“.”之外的类时,我总是使用“[class*='foo']”,因为你不能保证多个值出现在类属性中的顺序,但总是使用“。” 符号尽可能。但是,每当我在 Xpath 中使用 "class" 时,我总是使用 "[contains(@class,'foo')] 因为 Xpath 总是将 "class" 视为字符串文字,而 CSS "." 可以处理多个值

于 2013-08-27T12:19:12.783 回答