使用Java和selenium的css选择器中的多个值

时间:2013-08-27 11:02:29

标签: java selenium css-selectors selector

我需要在包装器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元素,放弃活跃包装器之外的那些元素。任何sugestions?

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

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

但这给了我一个空列表

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

1 个答案:

答案 0 :(得分:2)

span的class属性是否有可能包含多个值?

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

如果是,那就试试吧;

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

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