我需要找到一个带有标签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
你能帮我找到一个解决方案,忽略我感兴趣的标签之间的所有标签吗?
谢谢,
发布于 2018-08-04 07:08:22
定位一个元素时,可以通过执行另一个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?)也可能很有用。你在使用。
https://stackoverflow.com/questions/51680796
复制相似问题