2017-01-24 10 views
6

Я хотел бы использовать хромированную головку для автоматического тестирования с использованием селена. (https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md)Как подключиться к Chromium Headless с использованием Selenium

У меня есть безголовая версия уже работает на 9222. Так что, если я открыть http://10.252.100.33:9222/json/I действительно получаю

[ { 
    "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 

Вопросов:

+0

ли вы получить эту работу? Я сделал это на одном этапе, аналогично тому, что вы сделали (я также использовал «RemoteWebDriver»), но через месяц я вернулся к моей настройке и не подключился. – Nikki

+0

Чтобы все было в порядке, мы переключились на phantomJS. Используя Selenium's PhantomJSDriver и WebWire Protocol, мы смогли использовать эту настройку. (Un) повезло, мы должны снова исследовать, так как сопровождающий phantomJS уступает/Chrome 59 поддерживает безголовую. (https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE) –

ответ

11

Я думаю, что риое является Литтами немного вводят в заблуждении. Вам не нужно запускать сам хром, и вы можете использовать RemoteWebDriver. Убедитесь, что установлен хромированный рекордер (https://sites.google.com/a/chromium.org/chromedriver/home).

  • Start chromedriver (например ./chromedriver или ./chromedriver --port=9515)
  • Тогда вы должны сказать 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

Это сработало и для меня, спасибо! Теперь, чтобы исправить «отображение X» требуется для конверсий по коду, подумайте об использовании исключения Xvfb! – Nikki

+0

Для других: '$ Sudo APT-получить установку xvfb' ' $ Xvfb перспективе/дома/Nikki/chromedriver --whitelisted-ips' – Nikki

+0

https://stackoverflow.com/questions/47067188/headless-chrome- run-with-selenium – ses

2

В качестве альтернативы, если вы используете его локально, вы можете просто сделать это вот так. В scala.

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

 Смежные вопросы

  • Нет связанных вопросов^_^