问题描述
我正在使用 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
. - 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
. 代码块:
Code Block:
Solution
注意:步骤 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:
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
这篇关于端口无效.退出... org.openqa.selenium.os.OsProcess checkForError 同时使用 selenium 启动 chrome的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!