首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Selenium WebDriver在Java中。按标签ClassName和父ClassName选择

Selenium WebDriver在Java中。按标签ClassName和父ClassName选择
EN

Stack Overflow用户
提问于 2018-08-04 06:29:02
回答 1查看 826关注 0票数 0

我需要找到一个带有标签select和ClassName的元素

代码语言:javascript
复制
fare-finder__calendar__month-selector__dropdown

它位于带有ClassName的div中

代码语言:javascript
复制
fare-finder__calendar--outbound

问题是,在它们之间还有其他我不关心的div。目前,我正在使用以下解决方案:

代码语言:javascript
复制
driver.findElement(By.cssSelector("div.fare-finder__calendar--outbound div div div div label select.fare-finder__calendar__month-selector__dropdown")).click();

但是我想去掉它们之间的标签

代码语言:javascript
复制
div div div div label

你能帮我找到一个解决方案,忽略我感兴趣的标签之间的所有标签吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 07:08:22

定位一个元素时,可以通过执行另一个findElement调用来定位该元素内的元素。

代码语言:javascript
复制
driver.findElement(By.cssSelector("div.fare-finder__calendar--outbound")).findElement(By.cssSelector("select.fare-finder__calendar__month-selector__dropdown"));

您还可以使用(合理的) xpath:

代码语言:javascript
复制
By.xpath("//div[@class='parentElementClass']//select[@class='childElementClass']");

我对CSS选择器不太熟悉,但它应该允许任何子位置:

代码语言:javascript
复制
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?)也可能很有用。你在使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51680796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档