<div class="value test" />
我想确定那个网络元素。它只定义了这两个类。
我不能作为 className
执行以下操作不采用空格分隔值。有什么替代品?
@FindBy(className = "value test")
@CacheLookup
private WebElement test;
最佳答案
我认为 barak manos 的回答没有完全解释它。
假设我们有以下几个元素:
-
<div class="value test"></div>
-
<div class="value test "></div>
-
<div class="first value test last"></div>
-
<div class="test value"></div>
XPath 如何匹配
仅匹配 1(完全匹配),barak 的答案
driver.findElement(By.xpath("//div[@class='value test']"));
匹配 1、2 和 3(匹配类包含
value test
,类顺序很重要)driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));
匹配 1、2、3 和 4(只要元素具有类
value
和test
)driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));
此外,在这种情况下,Css Selector 始终支持 XPath(快速、简洁、原生)。
匹配 1
driver.findElement(By.cssSelector("div[class='value test']"));
匹配 1、2 和 3
driver.findElement(By.cssSelector("div[class*='value test']"));
匹配 1、2、3 和 4
driver.findElement(By.cssSelector("div.value.test"));
关于java - 通过多个类名查找 div 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713280/