如何在 selenium java 中单击轮播中的链接?

How to click a link inside a carousel in selenium java?

提问人:Nuke_Brain 提问时间:10/21/2023 更新时间:10/21/2023 访问量:34

问:

请参阅此链接: https://bluelinetourpackage.com/Web 里面有一个 KNOW MORE 按钮,每次我使用 xpath 并使用 selenium java 单击它时,它都不会做任何事情。任何人请帮助我,我是学习 selenium java 的学生

driver.findElement(By.xpath("/html[1]/body[1]/section[2]/div[1]/div[1]/div[1]/div[1]/a[1]")).click();

这是我的代码,用于单击它不起作用的链接

我采用了 xpath 并放入了 findelement 代码,但它不起作用

Java Selenium-WebDriver xPath 轮播

评论


答:

0赞 Yaroslavm 10/21/2023 #1

不要使用完整的 xpathes,这是不好的做法。尝试改用指向元素的唯一定位器。

在您的情况下,轮播有几个项目。Item 的类是 。 当项目出现在视口中时,它将获得额外的类。 所以当前可见项的定位器是 。carousel-itemactive.carousel-item.active

唯一剩下的就是按钮定位器。按钮实际上是单个容器中的,带有一些.ahref

现在我们得到了活动项目的完整唯一定位器,它是.carousel-item.active a[href]

WebDriverWait wait = new WebDriverWait(driver, 10);
driver.get("https://bluelinetourpackage.com/Web");

WebElement button = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".carousel-item.active a[href]")));
button.click();

评论

0赞 Nuke_Brain 10/22/2023
对我有用,只需很少的调整,代码适用于旧版本的 selenium。对于较新的版本,它将是: WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));driver.get(“bluelinetourpackage.com/Web”);WebElement 按钮 = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(“.carousel-item.active a[href]”)));button.click();[/代码块]