我正在学习Selenium,遇到一个问题,即使By.cssSelector(“ [class ='day']”)和By.className(“ day”)都返回不同数量的元素,一样。
我看到当我使用By.className(“ day”)时,日历上的禁用日期也会在理想情况下被选择,因为理想情况下,这些禁用日期的类名应该是“ old day”而不是“ day”。
driver.get(“ https://www.path2usa.com/travel-companions”);
driver.findElement(By.name(“ travel_date”))。click();
列表元素= driver.findElements(By.cssSelector(“ [class 'day']“)))
列出elements1 = driver.findElements(By.className(“ day”));
System.out.println(elements.size());
System.out.println(elements1.size());
预期:应返回30个元素。 实际: 使用Css选择器-我可以看到30,但是使用类名-我可以看到42。
答案 0 :(得分:0)
我认为问题出在以下方面:
By.className("cls")
返回具有该类的元素,例如:
<span class="cls">
<span class="cls other values here">
<span class="any-combination cls of-classes">
By.cssSelector("[class='cls']")
返回具有class
属性的元素与引号中的表达式完全相等,例如:
<span class="cls">
注意:只需在您链接的网站上检查(打开日历后),这似乎是真的:
$('.day').length
== 42 $('[class=day]').length
== 31