java - 让 selenium 等待 - WebDriverWait 问题

标签 java selenium google-chrome selenium-webdriver selenium-chromedriver

我遇到了一个无法解决的 Selenium 问题。 我收到以下错误”

no such element: Unable to locate element:{"method":"id","selector":"menu-supply-approval-queue"} 

我知道问题在于等待。 所以我做了下一个方法:

public static WebElement getWebElementByIdWithWait(String id)
    {
        WebDriverWait wait = new WebDriverWait(WebDriverMgr.getDriver(), 300000000);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("menu-supply-approval-queue")));

        return WebDriverMgr.waitForElementToBeClickable(By.id(id));
    }

但是 selenium 不会等待,并再次出现此错误:

Thu Sep 12 16:56:45 IDT 2019:ERROR: no such element: Unable to locate element: {"method":"id","selector":"menu-supply-approval-queue"}
  (Session info: chrome=76.0.3809.132)
  (Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: '', ip: '', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65'
Driver info: org.openqa.selenium.chrome.ChromeDriver

有人可以建议如何让 Selenium 等待元素显示/可点击吗? 它不再等待

更奇怪的是selenium实际上返回了元素然后点击它,所以如果他找不到它怎么返回它?它只会弄乱日志

这是有效的代码,但它使用 sleep

 public static WebElement getWebElementByIdWithWait(String id)
    {
        Logger.sleep(60000);
      //  WebDriverWait wait = new WebDriverWait(WebDriverMgr.getDriver(), 8);

     //   wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("menu-supply-approval-queue")));

        return WebDriverMgr.waitForElementToBeClickable(By.id(id));
    }

问候

最佳答案

此错误消息...

Thu Sep 12 16:56:45 IDT 2019:ERROR: no such element: Unable to locate element: {"method":"id","selector":"menu-supply-approval-queue"}
  (Session info: chrome=76.0.3809.132)
  (Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: '', ip: '', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65'
Driver info: org.openqa.selenium.chrome.ChromeDriver

...意味着 ChromeDriver 无法启动/生成新的 WebBrowser,即 Chrome 浏览器 session 。

您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 您正在使用 chromedriver=2.36
  • chromedriver=2.36 的发行说明明确提到以下内容:

Supports Chrome v63-65

Supports Chrome version 76

  • 您的JDK版本1.8.0_65,这是相当古老的。

因此,JDK v8u65ChromeDriver v2.36Chrome 浏览器 v76.0 之间存在明显不匹配

<小时/>

解决方案

确保:

关于java - 让 selenium 等待 - WebDriverWait 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908501/

相关文章:

java - 使用 Selenium Webdriver 运行基于 Web 的 SSH CLIENT PLUGIN 脚本的自动化

google-chrome - PWA : How to retrigger beforeinstallprompt?

javascript - 移动设备上的 100% 高度和 CSS

Java 在使用 Try/Catch 时陷入无限循环

java - 将Java应用程序部署到Digitalocean中的Tomcat根目录

python - 如何禁止在 Python 中的 Selenium Webdriver 的新选项卡中打开页面?

maven - 如何在 jenkins 中设置 chrome 浏览器窗口分辨率

javascript - Chrome 滚动在页面重新加载时不起作用

java - 无法从字符串创建 JSON 对象

java - 需要一个有效的算法来实现 String.replaceAll()