我需要找到一个标签为 select 和ClassName的元素
fare-finder__calendar__month-selector__dropdown
位于具有ClassName的 div 中
fare-finder__calendar--outbound
问题在于它们之间是我不在乎的其他div。 目前,我正在使用以下解决方案:
driver.findElement(By.cssSelector("div.fare-finder__calendar--outbound div div div div label select.fare-finder__calendar__month-selector__dropdown")).click();
但是我想摆脱它们之间的标签
div div div div label
您能帮我一个解决方案,以忽略所有我感兴趣的标签之间的标签吗?
谢谢
答案 0 :(得分:1)
找到元素时,可以通过执行另一个findElement调用在该元素内找到元素。
driver.findElement(By.cssSelector("div.fare-finder__calendar--outbound")).findElement(By.cssSelector("select.fare-finder__calendar__month-selector__dropdown"));
您还可以使用(明智的)xpath:
By.xpath("//div[@class='parentElementClass']//select[@class='childElementClass']");
我对CSS选择器不太熟悉,但是应该允许任何子位置:
driver.findElement(By.cssSelector("div.fare-finder__calendar--outbound select.fare-finder__calendar__month-selector__dropdown")).click();
您不必指定之间所有用>字符表示的元素。
更新:
我已经编辑了上面的代码以正确编译,并完全代表您的页面实际类。经过测试并针对此模拟页面https://5d70fb99-bb95-4031-bdec-e46bd79a44fd.htmlpasta.com/
如果这些定位器都不起作用,则您正在自动化的实际页面可能有些奇怪。张贴重新生成问题的最小HTML代码,所使用的Selenium-Webdriver版本以及所使用的驱动程序(Chrome,Firefox,IE,Edge?),也可能会很有用。