gpt4 book ai didi

java - Java 中的 Selenium WebDriver。通过标签ClassName和父ClassName选择

转载 作者:行者123 更新时间:2023-12-02 10:56:37 24 4
gpt4 key购买 nike

我需要找到一个带有标签 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

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

谢谢

最佳答案

当您定位一个元素时,您可以通过执行另一个 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?)也可能很有用。

关于java - Java 中的 Selenium WebDriver。通过标签ClassName和父ClassName选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com