Ответ 1
Я не думаю, что ответ 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 (точное совпадение), ответ барака
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"));