2016-08-31 3 views
1

現在、セレクタグリッドを使って分度器テストスクリプトを実行しようとしています。私の目標は、さまざまなOSの下で動作する複数のノードに分度器のテストスクリプトを配布することです。実行時間を節約するために、テストスクリプトのさまざまな部分を並列に実行する必要があります。現在の設定は、webdriver-managerを使用して複数のインスタンスでテストを配布する場合に機能しますが、webdriver-managerを使用すると1つのノードしか使用できません。私は登録セレンノードは、次のメッセージと文句を言い、またセレングリッドを介して複数のノード(osプラットフォーム)で分度器テストスクリプトを実行

node_modules/selenium-webdriver/error.js:26 
    constructor(opt_error) { 
         ^
WebDriverError: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html 
    at WebDriverError (./node_modules/selenium-webdriver/error.js:26:26) 
    at Object.checkLegacyResponse (./node_modules/selenium-webdriver/error.js:580:13) 
    at ./node_modules/selenium-webdriver/lib/webdriver.js:64:13 
    at Promise.invokeCallback_ (./node_modules/selenium-webdriver/lib/promise.js:1329:14) 
    at TaskQueue.execute_ (./node_modules/selenium-webdriver/lib/promise.js:2790:14) 
    at TaskQueue.executeNext_ (./node_modules/selenium-webdriver/lib/promise.js:2773:21) 
    at ./node_modules/selenium-webdriver/lib/promise.js:2652:27 
    at ./node_modules/selenium-webdriver/lib/promise.js:639:7 
    at process._tickCallback (internal/process/next_tick.js:103:7) 
From: Task: WebDriver.createSession() 
    at acquireSession (./node_modules/selenium-webdriver/lib/webdriver.js:62:22) 
    at Function.createSession (./node_modules/selenium-webdriver/lib/webdriver.js:295:12) 
    at Builder.build (./node_modules/selenium-webdriver/builder.js:458:24) 
    at [object Object].DriverProvider.getNewDriver (./node_modules/protractor/built/driverProviders/driverProvider.js:42:27) 
    at [object Object].Runner.createBrowser (./node_modules/protractor/built/runner.js:203:37) 
    at ./node_modules/protractor/built/runner.js:293:21 
    at _fulfilled (./node_modules/q/q.js:834:54) 
    at self.promiseDispatch.done (./node_modules/q/q.js:863:30) 
    at Promise.promise.promiseDispatch (./node_modules/q/q.js:796:13) 
    at ./node_modules/q/q.js:556:49 
[launcher] Process exited with error code 1 

$ java -jar /Users/user/Desktop/selenium-server-standalone-2.52.0.jar -role node -hub http://localhost:4444/grid/register Dwebdriver.chrome.driver="./node_modules/protractor/selenium/chromedriver_2.21" -browser "browserName=chrome,version=ANY,platform=MAC,maxInstances=20" 
14:40:17.078 INFO - Launching a Selenium Grid node 
14:40:17.126 INFO - Adding browserName=chrome,version=ANY,platform=MAC,maxInstances=20 
14:40:17.515 INFO - Java: Oracle Corporation 25.74-b02 
14:40:17.515 INFO - OS: Mac OS X 10.11.6 x86_64 
14:40:17.521 INFO - v2.52.0, with Core v2.52.0. Built from revision 4c2593c 
14:40:17.570 INFO - Driver provider org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: 
registration capabilities Capabilities [{ensureCleanSession=true, browserName=internet explorer, version=, platform=WINDOWS}] does not match the current platform MAC 
14:40:17.570 INFO - Driver provider org.openqa.selenium.edge.EdgeDriver registration is skipped: 
registration capabilities Capabilities [{browserName=MicrosoftEdge, version=, platform=WINDOWS}] does not match the current platform MAC 
14:40:17.570 INFO - Driver class not found: com.opera.core.systems.OperaDriver 
14:40:17.570 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered 
14:40:17.630 INFO - Selenium Grid node is up and ready to register to the hub 
14:40:17.650 INFO - Starting auto registration thread. Will try to register every 5000 ms. 
14:40:17.650 INFO - Registering the node to the hub: http://localhost:4444/grid/register 
14:40:17.669 INFO - The node is registered to the hub and ready to use 
14:41:32.968 INFO - Executing: [new session: Capabilities [{rootElement=*[ng-app], count=1, browserName=chrome, maxInstances=4, shardTestFiles=true}]]) 
14:41:32.977 INFO - Creating a new session for Capabilities [{rootElement=*[ng-app], count=1, browserName=chrome, maxInstances=4, shardTestFiles=true}] 
14:41:32.998 WARN - Exception thrown 
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' 
System info: host: 'user-M-C19J', ip: '10.128.164.26', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_74' 
Driver info: driver.version: unknown 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
    at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:183) 
    at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:119) 
    at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:95) 
    at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:124) 
    at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:59) 
    at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:1) 
    at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:111) 
    at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:79) 
    at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:202) 
    at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:164) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:130) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) 
    at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:680) 
    at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:571) 
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526) 
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479) 
    at org.openqa.jetty.http.HttpServer.service(HttpServer.java:920) 
    at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820) 
    at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986) 
    at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837) 
    at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243) 
    at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:358) 
    at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:537) 
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' 
System info: host: 'user-M-C19J', ip: '10.128.164.26', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_74' 
Driver info: driver.version: unknown 
    at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:113) 
    at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance(DefaultDriverProvider.java:97) 
    at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:60) 
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:222) 
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1) 
    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) 
Caused by: java.lang.reflect.InvocationTargetException 
    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.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:103) 
    ... 9 more 
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html 
    at com.google.common.base.Preconditions.checkState(Preconditions.java:199) 
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109) 
    at org.openqa.selenium.chrome.ChromeDriverService.access$0(ChromeDriverService.java:1) 
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) 
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296) 
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) 
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:138) 
    ... 14 more 
14:41:33.002 WARN - Exception: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html 

これは私である私はそれはセレングリッドでこの問題を克服することが可能です知っているが、私は次のエラーのテストコンソールを持っています現在の設定:

seleniumAddress: 'http://localhost:4444/wd/hub', 
chromeDriver: './node_modules/protractor/selenium/chromedriver_2.21', 
capabilities: { 
'rootElement': '*[ng-app]', 
'browserName': 'chrome', // chrome, firefox, or phantomjs 
'shardTestFiles': true, 
'maxInstances': 3 
} 

私はハブを起動するには、次のコマンドラインを実行しました:

java -jar /Users/xxx/selenium-server-standalone-3.0.0-beta2.jar -role hub 

と次のノードを実行するためのものです:

java -jar /Users/xxx/selenium-server-standalone-3.0.0-beta2.jar -role node -hub http://localhost:4444/grid/register 

クロームドライバは、下にある:/node_modules/protractor/selenium/chromedriver_2.21

は、誰もが成功セレングリッドに分度器を設定していますか?

答えて

0

Webdriver_managerは、サーバを起動するための迅速なソリューションとしてnpmにバンドルされており、Selenium Gridとしての包括的なソリューションではありません。グリッドは、すべてのプロフェッショナル分散実行環境で使用する必要があります。ジュリー

webdriverを-Managerからの応答を チェックこのlinkは、セレングリッドとハブ&ノード

そしてに関する分度器のためのオプションを持っていない私は、ローカルグリッドとも醤油ラボを使用しました。 ノードを初期化するときにchromeドライバプロパティを渡す必要があります。

のjava -jar /Users/xxx/selenium-server-standalone-3.0.0-beta2.jar -roleノード-hubます。http:// *******:4444 /グリッド/登録/ -Dwebdriver.chrome.driver = C:/ユーザー/ <> /AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver.exe

分度器コンファレンス - chromedriverオプションは、グリッド上を通過し、それが動作されていません唯一のwebdriver-managerです

+0

ご意見ありがとうございます。私はprotractor.confファイルからchromeDriverプロパティをコメントアウトし、前述のようにノードを初期化してからコマンドを実行したときにchromeドライバのプロパティを追加しました。ハブを使ってノードを登録することができましたが、分度器のテストスクリプトを実行しても、同じエラーメッセージが表示されます。何か考えていますか? – user6415984

+0

ノードからエラーメッセージも投稿しました。投稿された質問からのエラー出力を見てください – user6415984

関連する問題