我正在使用Selenium服务器独立jar- 3.11.0,最新的ChromeDriver-2.36和 Chrome 版本 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.it给出以下错误
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无法绑定到系统中分配的可用端口。
根据讨论Getting Invalid port error.
和Invalid port. Exiting...
"Invalid port. Exiting..." occurs when the port assigned to chromedriver is less than 0 or greater than 65535.
溶液
- 通过CLI执行
netstat
命令以查看是否已达到可能打开的连接限制,或检查给定端口上是否正在运行另一个应用程序。 - 检查您的防火墙设置,防火墙配置很有可能导致问题。
- 将ChromeDriver升级到当前的ChromeDriver v2.38级别。
- 将Chrome 版本保持在Chrome v66.x级别。(根据ChromeDriver v2.38发行说明(
- 通过IDE清理项目工作中心,并仅使用所需的依赖项重新生成项目。
- 使用CCleaner工具在执行测试套件之前和之后清除所有操作系统杂务。
- 如果您的基本 Web 客户端版本太旧,请通过Revo 卸载程序将其卸载,并安装最新的 GA 和已发布版本的Web 客户端。
- 重新启动系统以释放端口。
- 执行您的
@Test
。
注意:步骤 1、2、7 和 8 对于调试/解决您当前面临的问题至关重要。
<小时 />替代
作为替代方案,您可以强制WebDriver变体(即ChromeDriver(在特定端口上启动,例如65530
如下所示:
代码块:
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/");
控制台输出:
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
参考资料
您可以在以下位置找到一些相关的详细讨论:
- 端口无效。退出。。线程"main"中的异常 org.openqa.selenium.WebDriver异常:驱动程序服务器进程过早死亡 ChromeDriver Selenium
- org.openqa.selenium.os.OsProcess checkForError 和 org.apache.commons.exec.ExecuteException: 进程退出,出现 Selenium ChromeDriver 错误
- "OsProcess checkForError : CreateProcess error=193, %1 不是有效的 Win32 应用程序",同时通过 Java 和 Selenium 启动 Internet Explorer
检查驱动程序位置是否正确。我能够毫无问题地启动Facebook。
package Practice;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Facebook
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.facebook.com");
driver.manage().window().maximize();
}
}
将日期从阿拉伯语(或其他任何内容(更改为英语日期。
我来自伊朗。我也遇到了这个错误,并花了很多时间来找到它。 但最终通过将控制面板中的区域设置更改为英语来解决。
在我使用后工作
WebDriver dev= new ChromeDriver(new ChromeDriverService.Builder().usingPort(YOUR PORT).build());
您可以通过打开网络驱动程序应用程序获取您的端口 注意:保持 Chrome Driver 运行
如果您遇到无效的端口退出错误,请尝试以下代码:
System.setProperty("webdriver.chrome.driver","C:\Users\Om Sai Ram\workspace\com.gmail\chromedriver.exe" );
driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), DesiredCapabilities.chrome());
driver.get("http://www.google.com");
driver.manage().window().maximize();