我正试图在一个已经打开的铬中执行我的selenium自动化。
我用这一行打开一个铬:
/opt/google/chrome/chrome --remote-debugging-port=6666这是我的java代码
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();当我运行这段代码时,我得到了这个日志:
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.几秒钟后,我得到:铬不可达的错误
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无法连接到它。
我看了这些链接很不吉利
发布于 2021-05-18 14:33:30
在我的例子中,这是因为我使用一个端口(6666)在调试模式下启动我的chrome,这是受限制的,根据:限制的不安全端口列表在Chrome上
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]一个完整的铬列表是这里和这里。火狐允许端口这里。另外,如何强制允许某些端口,这里
标识错误的步骤
telnet localhost xyz验证,也可以在带有nc -zvv localhost xyz的windows中进行验证。localhost:xyz/foo/bar的http。如果端口正在侦听,则接收到json响应。如果由于某些问题,如不允许端口,铬没有选择这个端口,localhost:xyz/foo/bar返回一个错误。如果我找到了真正的端点,我将更新这个答案。如果端口侦听正确,则另一个低级别错误是原因:
发布于 2020-07-20 07:53:23
可以在下面设置属性以检查调试日志。
System.setProperty("webdriver.chrome.verboseLogging", "true");Windows的示例:
如果任何现有的铬进程正在运行,并且您已经打开了chrome的新实例,则可以使用
> chrome.exe --remote-debugging-port=9222然后,在执行有关的selenium脚本时,您可能会得到以下日志
[DEBUG]: DevTools HTTP Request: http://localhost:9222/json/version
[DEBUG]: DevTools HTTP Request failed打开chrome浏览器的干净实例以进行调试
chrome.exe --远程调试-端口=9222-没有-第一次运行--不默认-浏览器-检查-用户-数据-dir=“D:\远程调试文件夹”
现在用以下方法运行selenium
options.setExperimentalOption("debuggerAddress","localhost:9222");https://stackoverflow.com/questions/62973127
复制相似问题