当前位置:  开发笔记 > 编程语言 > 正文

如何使用Selenium连接Chromium Headless

如何解决《如何使用Selenium连接ChromiumHeadless》经验,为你挑选了2个好方法。

我想使用无头铬头进行硒的自动化测试.(https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md)

我确实已经在9222上运行了无头版本.所以如果我打开http://10.252.100.33:9222/json/我确实得到了

[ {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=127.0.0.1:9223/devtools/page/0261be06-1271-485b-bdff-48e443de7a91",
   "id": "0261be06-1271-485b-bdff-48e443de7a91",
   "title": "The Chromium Projects",
   "type": "page",
   "url": "https://www.chromium.org/",
   "webSocketDebuggerUrl": "ws://127.0.0.1:9223/devtools/page/0261be06-1271-485b-bdff-48e443de7a91"
} ]

作为下一步,我想将硒连接到无头铬上.但是,当我尝试

final DesiredCapabilities caps = DesiredCapabilities.chrome();
final WebDriver driver = new RemoteWebDriver(new URL("http://localhost:9222/json"), caps);
driver.get("http://www.google.com");

我确实得到以下注销

Jän 24, 2017 7:14:45 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMATION: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Jän 24, 2017 7:14:45 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMATION: Falling back to original OSS JSON Wire Protocol.
Jän 24, 2017 7:14:45 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMATION: Falling back to straight W3C remote end connection

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{browserName=chrome, version=, platform=ANY}], required capabilities = Capabilities [{}]
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'Geralds-MacBook-Pro.local', ip: '192.168.0.249', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.2', java.version: '1.8.0_111'
Driver info: driver.version: RemoteWebDriver

问题是:

RemoteWebDriver是连接无头铬的正确驱动程序吗?

我读到了DevTool协议(https://docs.google.com/presentation/d/1gqK9F4lGAY3TZudAtdcxzMQNEE7PcuQrGu83No3l0lw/),但我不确定如何使用selenium创建这样的客户端.

除了一些分段保险库之外,使用Chrome DevTools连接Chromium Headless(https://developers.google.com/web/tools/chrome-devtools/remote-debugging/);-)

小智.. 16

我认为自述文件有点误导.您不必自己启动铬,也可以使用RemoteWebDriver.确保已安装chromedriver(https://sites.google.com/a/chromium.org/chromedriver/home).

启动chromedriver(例如RemoteWebDriver./chromedriver)

然后你告诉chromedriver使用铬而不是铬

添加"--headless"作为附加参数

代码应如下所示:

final ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("/usr/bin/chromium-browser");
chromeOptions.addArguments("--headless");
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new RemoteWebDriver(url, desiredCapabilities);

在Ubuntu Linux上为我工作.



1> 小智..:

我认为自述文件有点误导.您不必自己启动铬,也可以使用RemoteWebDriver.确保已安装chromedriver(https://sites.google.com/a/chromium.org/chromedriver/home).

启动chromedriver(例如RemoteWebDriver./chromedriver)

然后你告诉chromedriver使用铬而不是铬

添加"--headless"作为附加参数

代码应如下所示:

final ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("/usr/bin/chromium-browser");
chromeOptions.addArguments("--headless");
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new RemoteWebDriver(url, desiredCapabilities);

在Ubuntu Linux上为我工作.



2> Stephen..:

另外,如果您在本地运行它,则可以这样做。在斯卡拉。

val chromeOptions = new ChromeOptions
chromeOptions.addArguments("--headless")
new ChromeDriver(chromeOptions)

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有