我正在尝试访问此div并稍后再点击它。
<div class="leaflet-marker-icon marker-cluster marker-cluster-small leaflet-clickable leaflet-zoom-animated" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; opacity: 1; transform: translate(702px, 396px); z-index: 396;" title="13 tracks listened in , UA">
这是我正在尝试做的事情:
WebElement cluster = driver.findElement(By.cssSelector("marker-cluster-small"));
这是我试图做的事情:
WebElement cluster = driver.findElement(By.xpath("//div[@class='leaflet-marker-icon marker-cluster marker-cluster-small leaflet-clickable leaflet-zoom-animated']"));
没有一种方法可行。第一个抛出“无法定位元素”消息。第二个没有出现错误,但是当我这样做时:
cluster.click();
没有任何反应。
我究竟做错了什么?
感谢。
答案 0 :(得分:4)
您应该在此页How can I find an element by CSS class with XPath?上尝试答案。
你应该能够通过只搜索“marker-cluster-small”来做一些接近你的第一个答案的事情。希望它在某种程度上有所帮助。
所以它会
("//div[contains(@class, 'marker-cluster-small')]")
答案 1 :(得分:0)
你也可以通过css找到它:
driver.find_element(:css, '.leaflet-marker-icon.marker-cluster.marker-cluster-small.leaflet-clickable.leaflet-zoom-animated')
但在这种情况下,康纳的答案是最好的,因为班级价值太长了。
答案 2 :(得分:0)
在你的CSS选择器中,你只是告诉它marker-cluster-small
- 但这不起作用,因为它正在寻找一个元素标签,而不是一个类。要使它找到一个类,你需要这样的点符号:
div.marker-cluster-small
或
.marker-cluster-small
请记住,类上的CSS选择器比xpath选择器更有效,因为你可以只命名一个类 - 即使该元素也有其他类。
所以我建议使用CSS作为理想的定位器解决方案,简洁有效地使用CSS:
WebElement cluster = driver.findElement(By.cssSelector(".marker-cluster-small"));
P.S。在Firefox上使用firepath验证了CSS。