端口无效.退出... org.openqa.selenium.os.OsProcess checkForError 同时使用 selenium 启动 chrome

我正在使用 selenium 服务器独立 jar-3.11.0、最新的 ChromeDriver-2.36 和Chrome 版本 66.0.3359.139

I am using selenium server standalone jar- 3.11.0, latest ChromeDriver-2.36 and Chrome version 66.0.3359.139

我的代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class WebDriverBasics {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "C:\Users\surya\Downloads\Compressed\chromedriver_win32_2\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.get("http://www.facebook.com");
        driver.manage().window().maximize();
    }
}

但我无法启动 chrome.its 给出以下错误

But i am unable to launch chrome.its giving below error

Invalid port. Exiting...
?? ??, ???? ??:??:?? ????????? org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
System info: host: 'DESKTOP-5GVJDVR', ip: '192.168.0.104', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171'
Driver info: driver.version: ChromeDriver
    at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192)
    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:132)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
    at WebDriverBasics.main(WebDriverBasics.java:12)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:????/status] to be available after ????? ms
    at 

推荐答案

这个错误信息...

Invalid port. Exiting...
?? ??, ???? ??:??:?? ????????? org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)

...暗示 OsProcess 无法绑定到您系统中分配的 空闲端口.

...implies that the OsProcess is unable to bind to the assigned free port within your system.

根据讨论 获取无效端口错误.端口无效.正在退出...

端口无效.退出……"当分配给 chromedriver 的端口小于 0 或大于 65535 时发生.

解决方案

  • 通过 CLI 执行 netstat 命令以查看您是否已达到可能打开的连接的限制或检查给定端口上是否有另一个应用程序正在运行.
  • 检查您的防火墙设置,防火墙配置很可能会导致问题.
  • 将 ChromeDriver 升级到当前的 ChromeDriverv2.38 级别.
  • 将 Chrome 版本保持在 Chrome v66.x 级别.(根据 ChromeDriver v2.38 发行说明)
  • 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖.
  • 使用 CCleaner 工具清除之前和在您的测试套件执行之后.
  • 如果您的基础 Web Client 版本太旧,请通过 卸载它Revo Uninstaller 并安装最新的 GA 和发布版本的 Web Client.
  • 进行一次系统重启以释放端口.
  • 执行你的 @Test.
  • Solution

    • Execute netstat command through CLI to see if you have reached limit of possible open connections or check if there is another application running on the given port.
    • Check your firewall settings, there is a good chance that firewall configuration may be causing the issue.
    • Upgrade ChromeDriver to current ChromeDriver v2.38 level.
    • Keep Chrome version at Chrome v66.x levels. (as per ChromeDriver v2.38 release notes)
    • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
    • Use CCleaner tool to wipe off all the OS chores before and after the execution of your test Suite.
    • If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.
    • Take a System Reboot to free up the ports.
    • Execute your @Test.
    • 注意:步骤 1、2、7 和 8 对于调试/解决您当前面临的问题至关重要.

      Note : Steps 1, 2, 7 and 8 are vital to debug/solve the issue you are currently facing.

      作为替代方案,您可以强制 WebDriver 变体,即 ChromeDriver 在特定端口上启动,例如65530如下:

      As an alternative you can force the WebDriver variant i.e. ChromeDriver to start on a specific port e.g. 65530 as follows:

      • 代码块:

      • Code Block:

      System.setProperty("webdriver.chrome.driver","C:\WebDrivers\chromedriver.exe");
      WebDriver driver= new ChromeDriver(new ChromeDriverService.Builder().usingPort(65530).build());
      driver.get("https://www.google.com/");
      

    • 控制台输出:

    • Console Output:

      Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 65530
      Only local connections are allowed.
      Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
      ChromeDriver was started successfully.
      Jul 20, 2020 7:36:17 PM org.openqa.selenium.remote.ProtocolHandshake createSession
      INFO: Detected dialect: W3C
      

    • 您可以在以下位置找到一些相关的详细讨论:

      You can find a couple of relevant detailed discussions in:

      • 端口无效.Exiting..Exception in thread main" org.openqa.selenium.WebDriverException:驱动服务器进程过早死亡 ChromeDriver Selenium
      • org.openqa.selenium.os.OsProcess checkForError 和 org.apache.commons.exec.ExecuteException:进程因 Selenium ChromeDriver 错误而退出
      • "OsProcess checkForError : CreateProcess error=193, %1 is not an valid Win32 application",同时通过 Java 和 Selenium 启动 Internet Explorer

相关文章