【问题标题】:Executing get - Exception thrown for selenium standalone with chrome driver执行 get - 使用 chrome 驱动程序为 selenium 独立抛出异常
【发布时间】:2017-09-28 14:47:57
【问题描述】:

简介

我有 selenium 独立运行:

java -jar ./selenium-server-standalone-3.4.0.jar

我在同一个工作目录中有chromedriver

我创建 chrome 会话:

curl -XPOST -d'{"capabilities":{"desiredCapabilities":{"browserName":"chrome"}},"desiredCapabilities":{"browserName":"chrome"}}' http://127.0.0.1:4444/wd/hub/session
{"state":null,"sessionId":"d33f687e-62c2-4147-aab1-a1c1bba29aed","hCode":1317400713,"value":{"applicationCacheEnabled":false,"rotatable":false,"networkConnectionEnabled":true,"chrome":{"userDataDir":"/tmp/.com.google.Chrome.w26Qkk"},"takesHeapSnapshot":true,"databaseEnabled":false,"handlesAlerts":true,"hasTouchScreen":true,"version":"57.0.2987.133","platform":"LINUX","browserConnectionEnabled":false,"nativeEvents":true,"acceptSslCerts":true,"webdriver.remote.sessionid":"d33f687e-62c2-4147-aab1-a1c1bba29aed","locationContextEnabled":true,"webStorageEnabled":true,"browserName":"chrome","takesScreenshot":true,"javascriptEnabled":true,"cssSelectorsEnabled":true},"class":"org.openqa.selenium.remote.Response","status":0}

我看到 chrome 已打开并显示消息:

You are using an unsupported command-line flag: -ignore-certificate-errors. Stability and security will suffer.

问题

然后我尝试在chrome中打开一个url:

curl -XPOST -d'{"url":"http://stackoverflow.com"}' http://127.0.0.1:4444/wd/hub/session/d33f687e-62c2-4147-aab1-a1c1bba29aed/url

我收到response

Chrome 浏览器确实打开网址。

获取 URL 命令的 Selenium 独立输出:

08:32:33.405 INFO - Executing: [get: http://stackoverflow.com])
08:32:34.255 WARN - Exception thrown
org.openqa.selenium.WebDriverException: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"5244.1","isDefault":true},"id":1,"name":"","origin":"://"}
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.9.248304,platform=Linux 4.2.0-27-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 64 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'np', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-27-generic', java.version: '1.8.0_121'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, chrome={userDataDir=/tmp/.com.google.Chrome.w26Qkk}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=57.0.2987.133, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 6d5d29b199469d31ecf04abcfbea2493
    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.ErrorHandler.createThrowable(ErrorHandler.java:215)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:671)
    at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:364)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:104)
    at com.sun.proxy.$Proxy4.get(Unknown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver.get(EventFiringWebDriver.java:163)
    at org.openqa.selenium.remote.server.handler.ChangeUrl.call(ChangeUrl.java:40)
    at org.openqa.selenium.remote.server.handler.ChangeUrl.call(ChangeUrl.java:25)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
08:32:34.288 WARN - Exception: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"5244.1","isDefault":true},"id":1,"name":"","origin":"://"}
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.9.248304,platform=Linux 4.2.0-27-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 64 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'np', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-27-generic', java.version: '1.8.0_121'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, chrome={userDataDir=/tmp/.com.google.Chrome.w26Qkk}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=57.0.2987.133, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 6d5d29b199469d31ecf04abcfbea2493

用 Firefox 就可以了

同样的操作也适用于 firefox 和 geckodriver:

curl -XPOST -d'{"capabilities":{"desiredCapabilities":{"browserName":"firefox"}},"desiredCapabilities":{"browserName":"firefox"}}' http://127.0.0.1:4444/wd/hub/session

curl -XPOST -d'{"url":"http://stackoverflow.com"}' http://127.0.0.1:4444/wd/hub/session/73835d43-d566-4e88-bcab-1f45ff4db129/url

我看到在 Firefox 浏览器中打开了 stackoverflow.com。

版本

Google chrome 和 chrome 驱动程序版本:

google-chrome -version
Google Chrome 57.0.2987.133 

 ./chromedriver -version
Starting ChromeDriver (v2.9.248304) on port 9515

操作系统: Ubuntu 14.04

【问题讨论】:

    标签: google-chrome selenium selenium-chromedriver


    【解决方案1】:

    根据您的堆栈跟踪,您使用的是旧的ChromeDriver 2.9。但是,根据ChromeDriver downloads page,对于 Chrome 57,您应该使用ChromeDriver 2.29

    【讨论】:

    • 没错。使用 ChromeDriver 2.29 解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2018-07-14
    • 2014-10-26
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多