<div class="value test" />
Je voudrais identifier cet élément Web. Il n'a défini que ces deux classes. Je ne peux pas faire ce qui suit car className
ne prend pas de valeur séparée par des espaces. Quelles sont les alternatives?
@FindBy(className = "value test")
@CacheLookup
private WebElement test;
Je ne pense pas que la réponse de barak manos l'explique pleinement.
Imaginez que nous ayons peu d'éléments comme suit:
<div class="value test"></div>
<div class="value test "></div>
<div class="first value test last"></div>
<div class="test value"></div>
Comment XPath correspond
Correspondance 1 seule (correspondance exacte), réponse de barak
driver.findElement(By.xpath("//div[@class='value test']"));
Match 1, 2 et 3 (la classe de match contient value test
, l'ordre des classes est important)
driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));
Correspondance 1, 2, 3 et 4 (tant que les éléments ont la classe value
et test
)
driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));
De plus, dans des cas comme celui-ci, Css Selector est toujours en faveur de XPath (rapide, concis, natif).
Match 1
driver.findElement(By.cssSelector("div[class='value test']"));
Match 1, 2 et 3
driver.findElement(By.cssSelector("div[class*='value test']"));
Match 1, 2, 3 et 4
driver.findElement(By.cssSelector("div.value.test"));
Essaye ça:
test = driver.findElement(By.xpath("//div[@class='value test']"));