通过多个类名查找 div 元素?
2022-08-31 14:15:34
<div class="value test" />
我想识别该 Web 元素。它只定义了这两个类。我不能做以下事情,因为它不采用空格分隔的值。有哪些替代方案?className
@FindBy(className = "value test")
@CacheLookup
private WebElement test;
<div class="value test" />
我想识别该 Web 元素。它只定义了这两个类。我不能做以下事情,因为它不采用空格分隔的值。有哪些替代方案?className
@FindBy(className = "value test")
@CacheLookup
private WebElement test;
我不认为巴拉克·马诺斯的回答已经完全解释了这一点。
想象一下,我们有几个元素,如下所示:
<div class="value test"></div>
<div class="value test "></div>
<div class="first value test last"></div>
<div class="test value"></div>
XPath 如何匹配
只匹配1(完全匹配),巴拉克的答案
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"));
试试这个:
test = driver.findElement(By.xpath("//div[@class='value test']"));