1

webdriver.Remote()를 사용하여 노드에서 크롬 세션을 시작하려고합니다. 브라우저를 시작할 수 없습니다. webdriver.Chrome()으로 작업 할 수 있지만 그리드에서는 사용할 수 없습니다.Selenium webdriver와 함께 Chrome 드라이버 사용 .Remote Python

노드와 허브가 클라이언트와 동일한 로컬 시스템에서 실행되고 있습니다. 다음은

13:29:28.442 INFO - Trying to create a new session on test slot {seleniumProtocol=WebDriver, se:CONFIG_UUID=5804e13e-503e-4490-99ef-7776c1579caf, browserName=chrome, maxInstances=5, platform=MAC} 
13:35:08.137 INFO - Got a request to create a new session: Capabilities {browserName: chrome, version: } 
13:35:08.137 INFO - Trying to create a new session on test slot {seleniumProtocol=WebDriver, se:CONFIG_UUID=5804e13e-503e-4490-99ef-7776c1579caf, browserName=chrome, maxInstances=5, platform=MAC} 

: 여기

은 여기

Traceback (most recent call last): 
    File "RCTest.py", line 8, in <module> 
    desired_capabilities=webdriver.DesiredCapabilities.CHROME 
    File "/Users/admin/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__ 
    self.start_session(desired_capabilities, browser_profile) 
    File "/Users/admin/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session 
    response = self.execute(Command.NEW_SESSION, parameters) 
    File "/Users/admin/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute 
    self.error_handler.check_response(response) 
    File "/Users/admin/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot parse capability: goog:chromeOptions 
from unknown error: cannot parse binary 
from unknown error: must be a string 
    (Driver info: chromedriver=2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 2 milliseconds 
Build info: version: '3.8.0', revision: '924c4067df', time: '2017-11-30T11:37:19.049Z' 
System info: host: 'MacM', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '9.0.1' 
Driver info: driver.version: unknown 
Stacktrace: 
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2) 
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) 
    at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance (Constructor.java:488) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:214) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:166) 
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0 (JsonWireProtocolResponse.java:53) 
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2 (JsonWireProtocolResponse.java:91) 
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0 (ProtocolHandshake.java:123) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.Spliterators$ArraySpliterator.tryAdvance (Spliterators.java:958) 
    at java.util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline.java:127) 
    at java.util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline.java:502) 
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:488) 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474) 
    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:476) 
    at org.openqa.selenium.remote.ProtocolHandshake.createSession (ProtocolHandshake.java:126) 
    at org.openqa.selenium.remote.ProtocolHandshake.createSession (ProtocolHandshake.java:73) 
    at org.openqa.selenium.remote.server.ServicedSession$Factory.apply (ServicedSession.java:232) 
    at org.openqa.selenium.remote.server.ActiveSessionFactory.lambda$apply$11 (ActiveSessionFactory.java:167) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.ReferencePipeline$11$1.accept (ReferencePipeline.java:375) 
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:177) 
    at java.util.Spliterators$ArraySpliterator.tryAdvance (Spliterators.java:958) 
    at java.util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline.java:127) 
    at java.util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline.java:502) 
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:488) 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474) 
    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:476) 
    at org.openqa.selenium.remote.server.ActiveSessionFactory.apply (ActiveSessionFactory.java:170) 
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$1 (NewSessionPipeline.java:44) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.Collections$2.tryAdvance (Collections.java:4734) 
    at java.util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline.java:127) 
    at java.util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline.java:502) 
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:488) 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474) 
    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:476) 
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$2 (NewSessionPipeline.java:47) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.DistinctOps$1$2.accept (DistinctOps.java:175) 
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:177) 
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195) 
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:177) 
    at java.util.stream.Streams$StreamBuilderImpl.tryAdvance (Streams.java:397) 
    at java.util.stream.Streams$ConcatSpliterator.tryAdvance (Streams.java:720) 
    at java.util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline.java:127) 
    at java.util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline.java:502) 
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:488) 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474) 
    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:476) 
    at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession (NewSessionPipeline.java:50) 
    at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute (BeginSession.java:77) 
    at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0 (WebDriverServlet.java:240) 
    at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:514) 
    at java.util.concurrent.FutureTask.run (FutureTask.java:264) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run (Thread.java:844) 

실패 허브 응답 때 여기

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

driver = webdriver.Remote(
'http://192.168.1.18:4444/wd/hub‘, 
    desired_capabilities=webdriver.DesiredCapabilities.CHROME 
) 
time.sleep(10) 
driver.quit() 

가 Test.py의 추적이다 Test.py

이고 노드 응답 :

java -jar selenium-server-standalone-3.8.0.jar -role node -hub http://192.168.1.18:4444/grid/register 

그리고 허브 :

java -Dwebdriver.chrome.driver='/chromedriver' -jar selenium-server-standalone-3.8.0.jar -role hub 
chromedriver를 열지 않는 브라우저가 여전히

chromedri 38842 admin 9u IPv4 0xb74a80d3f95a4bab  0t0 TCP localhost:20917 (LISTEN) 

내가 가진 노드를 시작했습니다 청취 연결합니다 비록

Found handler: [email protected]652a7f 
13:35:08.145 INFO - /session: Executing POST on /session (handler: BeginSession) 
13:35:08.148 INFO - Capabilities are: Capabilities {browserName: chrome, goog:chromeOptions: {binary: null}, se:CONFIG_UUID: 5804e13e-503e-4490-99ef-777..., version: } 
13:35:08.148 INFO - Capabilities {browserName: chrome, goog:chromeOptions: {binary: null}, se:CONFIG_UUID: 5804e13e-503e-4490-99ef-777..., version: } matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService) 
Starting ChromeDriver 2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2) on port 3619 
Only local connections are allowed. 

나는 이것을 작동 시키려고 노력해 왔으며, 내가 누락 된 것을 발견 할 수 없다.

내가 실행하고 있습니다 : 파이썬 : 2.7.13 셀레늄 : 3.8

나는 내가 시작하는 크롬 브라우저가 필요합니다 잘못된 XD

을 뭐하는 거지주세요.

UPDATE :

난 아직도 난 그냥 셀레늄 독립을 사용하는 그리드로 전환하고 난 AWS Ubunutu 인스턴스 작업 eveything를 얻기 위해 관리해야 구매를이 알아 낸 havent 한

. 그래서 지금은이 방법이 효과적입니다. 나는 왜 내가 그리드와 함께 일할 수 없는지 궁금해.

답변

0

크롬 옵션은 SeleniumDriver 업그레이드 후에 더 이상 프로그래밍 방식으로 설정되지 않습니다. 2.35.0 예상대로 작동 :

난 그냥 우리 이전 SeleniumDriver 버전이 기능을 테스트하기 위해 내 SeleniumDriver 업그레이드를 롤백했습니다.

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/7043

+0

가 파싱 문제를 만족 파이썬 구현을보고 멋진겠습니까 참조하십시오. ChromeOptions을 설정하려했지만 운이 없었습니다. 나는 그것을 뒤로 굴리는 것을 고려할 것이다. 예를 들어 –

+0

: [링크] (https://stackoverflow.com/questions/13227346/set-chrome-options-with-remote-driver) 아직도 나를 위해 작동하지 않습니다. 그리고 나는 뒤로 물러났다._selenium.common.exceptions.WebDriverException : 메시지 : u "알 수없는 오류 : 기능을 구문 분석 할 수 없습니다. goog : chromeOptions \ nfrom 알 수없는 오류 : 바이너리를 구문 분석 할 수 없습니다 \ n 알 수없는 오류입니다. –

관련 문제