Source code:
package Labarary;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class LAb {
public static void main(String[] args) {
System.out.println("chrome");
System.setProperty("webdriver.chrome.driver","C:\Users\Manjit\Downloads\chromedriver_win32\chromedriver.exe");
// TODO Auto-generated method stub
WebDriver driver=new ChromeDriver();
}
}
端口无效。退出。。。 ?????, ??????:??:?????????
org.openqa.selenium.os.OsProcess checkForError SEVERE: org.apache.commons.exec.ExecuteException:进程退出,并显示 错误:1(退出值:1(线程"main"中出现异常 org.openqa.selenium.WebDriverException: 超时等待驱动程序 服务器启动。内部版本信息:版本:"3.12.0",修订版:"7c6e0b3", 时间: '2018-05-08T15:15:03.216Z' 系统信息: 主机: 'MANJIT-PC', ip: '192.168.1.19', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_171' 驱动程序信息: 驱动程序版本: ChromeDriver at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192( 在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178( 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79( 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543( 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207( 在 org.openqa.selenium.remote.RemoteWebDriver.(远程网络驱动程序.java:130( 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:181( 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:168( 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123( at Labarary.LAb.main(LAb.java:20( 由以下原因引起: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out wait 对于 [http://localhost:?????/状态]将在?????后可用MS 在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100( 在 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:187( ...9 更多 原因: java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(Unknown Source( at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:148( 在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75( ...10 更多
此错误消息...
Invalid port. Exiting... ??? ??, ???? ??:??:?? ???????
org.openqa.selenium.os.OsProcess checkForError
。意味着OsProcess无法将ChromeDriver 服务器进程绑定到系统中分配的可用端口。
根据讨论获取无效端口错误和无效端口。退出。。。
"端口无效。退出。。。"在分配给 chromedriver 的端口小于 0 或大于 65535 时发生。
调试步骤
执行以下步骤以解决核心问题:
- 通过CLI执行
netstat
命令,以查看您是否已达到可能打开的连接限制,或检查 ChromeDrive 使用的端口上是否正在运行其他应用程序。 - 检查您的防火墙设置,防火墙配置很有可能阻止了通信。
- 将ChromeDriver 升级到当前的 ChromeDriverv2.84 级别。
- 将Chrome 升级到当前的Chrome v84.0级别。(根据ChromeDriver v84.0发行说明(
- 如果基本 Web 客户端版本太旧,请将其卸载并安装最新的 GA 和已发布版本的Web 客户端。
- 通过IDE清理项目工作中心,并仅使用所需的依赖项重新生成项目。
- (仅限WindowsOS(使用CCleaner工具在执行测试套件之前和之后清除所有操作系统杂务。
- (仅限LinuxOS(在执行测试套件之前和之后释放Ubuntu/Linux Mint中未使用/缓存的内存。
- 重新启动系统以释放使用的端口。
- 以非 root用户身份执行
@Test
。 - 始终在方法中调用
driver.quit()
tearDown(){}
以正常关闭和销毁WebDriver和Web 客户端实例。
另类
作为替代方案,您可以强制WebDriver变体(即ChromeDriver(在特定端口上启动,例如65535
如下所示:
代码块:
System.setProperty("webdriver.chrome.driver","C:\WebDrivers\chromedriver.exe"); WebDriver driver= new ChromeDriver(new ChromeDriverService.Builder().usingPort(65535).build()); driver.get("https://www.google.com/");
控制台输出:
Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 65535 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
引用
您可以在以下位置找到一些相关的详细讨论:
- 端口无效。退出。。。org.openqa.selenium.os.OsProcess checkForError 同时使用 selenium 启动 chrome