首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium Chrome DevTools:未知错误:无法连接到本地主机上的铬:6666来自无法到达的铬

Selenium Chrome DevTools:未知错误:无法连接到本地主机上的铬:6666来自无法到达的铬
EN

Stack Overflow用户
提问于 2020-07-18 19:49:40
回答 2查看 6.9K关注 0票数 1

我正试图在一个已经打开的铬中执行我的selenium自动化。

我遵循以下步骤:https://medium.com/@harith.sankalpa/connect-selenium-driver-to-an-existing-chrome-browser-instance-41435b67affd

我用这一行打开一个铬:

代码语言:javascript
复制
/opt/google/chrome/chrome --remote-debugging-port=6666

这是我的java代码

代码语言:javascript
复制
System.setProperty("webdriver.chrome.driver", "/../chromedriver");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress","localhost:6666");
// Initialize browser
WebDriver driver = new ChromeDriver(options);
// Open Google
driver.get("http://www.google.com");
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("jrichardsz");    
// Close browser
driver.close();

当我运行这段代码时,我得到了这个日志:

代码语言:javascript
复制
Starting ChromeDriver 84.0.4147.30 (48b3e868c0aa7e814951969b4c0b6f6949e110a8-refs/branch-heads/4147@{#310}) on port 12155
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

几秒钟后,我得到:铬不可达的错误

代码语言:javascript
复制
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot connect to chrome at localhost:6666
from chrome not reachable
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'jane_doe', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '***', java.version: '1.8.0_151'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x556168a87ea9 <unknown>

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    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:157)
    at OpenedChrome.main(OpenedChrome.java:24)

我也尝试过使用chromiun和opera,我也得到了同样的错误。

我的chrome打开了,但是java无法连接到它。

我看了这些链接很不吉利

EN

回答 2

Stack Overflow用户

发布于 2021-05-18 14:33:30

在我的例子中,这是因为我使用一个端口(6666)在调试模式下启动我的chrome,这是受限制的,根据:限制的不安全端口列表在Chrome

代码语言:javascript
复制
6665,    // Alternate IRC [Apple addition]
6666,    // Alternate IRC [Apple addition]
6667,    // Standard IRC [Apple addition]

一个完整的铬列表是这里这里。火狐允许端口这里。另外,如何强制允许某些端口,这里

标识错误的步骤

  • 如果我在调试模式下在端口xyz启动我的铬。我需要验证这个端口是否被chrome正确使用,或者这个端口是否正在监听。
  • 端口侦听可以使用telnet localhost xyz验证,也可以在带有nc -zvv localhost xyz的windows中进行验证。
  • 我找到了另一个选项来验证chrome是否已经成功地使用了这个端口。这是一种类似于localhost:xyz/foo/bar的http。如果端口正在侦听,则接收到json响应。如果由于某些问题,如不允许端口,铬没有选择这个端口,localhost:xyz/foo/bar返回一个错误。如果我找到了真正的端点,我将更新这个答案。

如果端口侦听正确,则另一个低级别错误是原因:

  • 只需检查您的java代码就可以指向确切的端口。
  • 司机的确切版本。Selenium对驱动程序版本非常敏感。
  • 已使用的浏览器版本与驱动程序版本兼容。
  • 在linux上试一试。在windows中会出现一些意外的错误。
票数 1
EN

Stack Overflow用户

发布于 2020-07-20 07:53:23

可以在下面设置属性以检查调试日志。

代码语言:javascript
复制
System.setProperty("webdriver.chrome.verboseLogging", "true");

Windows的示例:

如果任何现有的铬进程正在运行,并且您已经打开了chrome的新实例,则可以使用

代码语言:javascript
复制
> chrome.exe --remote-debugging-port=9222

然后,在执行有关的selenium脚本时,您可能会得到以下日志

代码语言:javascript
复制
[DEBUG]: DevTools HTTP Request: http://localhost:9222/json/version
[DEBUG]: DevTools HTTP Request failed

打开chrome浏览器的干净实例以进行调试

chrome.exe --远程调试-端口=9222-没有-第一次运行--不默认-浏览器-检查-用户-数据-dir=“D:\远程调试文件夹”

现在用以下方法运行selenium

代码语言:javascript
复制
options.setExperimentalOption("debuggerAddress","localhost:9222");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62973127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档