我需要在包装器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']"));
答案 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”。“可以处理多个值