gpt4 book ai didi

java - 如何修复 Selenium Webdriver 异常 ElementNotVisibleException?

转载 作者:行者123 更新时间:2023-11-30 06:51:42 25 4
gpt4 key购买 nike

我正在尝试使用 Selenium 解析 Upwork 并遇到异常

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException:

我不明白为什么。我尝试单击包含链接的 h2 元素,链接本身,但仍然出现相同的异常。我在开发工具中检查该元素的样式,确定该元素可见。

我尝试使用 ExpectedConditions 并等待元素变得可见,但出现超时异常。我做错了什么以及如何点击此链接?

当然我可以只使用uri并打开它,但我想通过点击解决问题。

System.setProperty("webdriver.gecko.driver", "/usr/local/bin/geckodriver");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.upwork.com/o/jobs/browse/");
List<WebElement> titles = driver.findElements(By.className("job-title"));
for (WebElement title: titles) {
System.out.println("text: " + title.getAttribute("innerText"));
System.out.println("tag: " + title.getTagName());
title.click();
driver.navigate().back();
}

最佳答案

我不确定您到底想做什么,但是如果您想抓取网站,让我告诉您这种方法可能行不通。这些网站配备了识别机器人的功能,迟早它会识别您的代码,并向您提供验证码进行验证。

但是让我们谈谈您的代码,它失败了,因为该元素不可见。这很简单,可能是因为可见性标志为假或大小不可用或其他原因。简单的解决方法是获取 href 元素,您的问题就解决了。

只需添加 TODO 代码,该代码就会运行。

    WebDriver driver = new FirefoxDriver();
driver.get("https://www.upwork.com/o/jobs/browse/");
List<WebElement> titles = driver.findElements(By.xpath("//h2/a"));
for (int i=0; i<titles.size(); i++) {
//TODO add a code to wait until first page loaded

//To handle StaleElementReferenceException
WebElement title = driver.findElements(By.xpath("//h2/a")).get(i);
System.out.println("text: " + title.getAttribute("innerText"));
System.out.println("tag: " + title.getTagName());
title.click();
driver.navigate().back();
}

关于java - 如何修复 Selenium Webdriver 异常 ElementNotVisibleException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42646095/

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