2016-10-31 7 views
0

実際には、デフォルトのwebdriverを静かに変更しようとすると苦労しています。実際に私はセレンのグリッドで私のテストを実行したい。 PageObjectを継承するクラスに次のコードを追加します:デフォルトのWebDriver Serenityを設定します。

DesiredCapabilities cap = DesiredCapabilities.firefox(); 
    cap.setPlatform(Platform.WINDOWS); 
    cap.setCapability("marionette",false); 
    ProfilesIni profile = new ProfilesIni(); 
    FirefoxProfile ffprofile = profile. 
      getProfile("JbehaveProfile"); 
    cap.setCapability(FirefoxDriver.PROFILE, ffprofile); 
    //cap.setVersion("46.0.1"); 
    URL url = new URL("http://localhost:4444/wd/hub"); 
    WebDriver driver = new RemoteWebDriver(url,cap); 
    Serenity.getWebdriverManager().registerDriver(driver); 
    Serenity.getWebdriverManager().setCurrentDriver(driver); 

しかし、動作しません。それはエラーnullポインタ例外を与えます。セレニティでセレングリッドを設定する方法をアドバイスしてください。ありがとう。

java.lang.NullPointerException 
at testSeleniumGrid.pages.DictionaryPage.setProfileFirefox(DictionaryPage.java:70) 
at testSeleniumGrid.steps.serenity.EndUserSteps.is_the_home_page(EndUserSteps.java:35) 
at testSeleniumGrid.steps.serenity.EndUserSteps$$EnhancerByCGLIB$$6d97ef9c.CGLIB$is_the_home_page$3(<generated>) 
at testSeleniumGrid.steps.serenity.EndUserSteps$$EnhancerByCGLIB$$6d97ef9c$$FastClassByCGLIB$$53eb4f32.invoke(<generated>) 
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:348) 
at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:333) 
at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:308) 
at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:130) 
at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:57) 
at testSeleniumGrid.steps.serenity.EndUserSteps$$EnhancerByCGLIB$$6d97ef9c.is_the_home_page(<generated>) 
at testSeleniumGrid.steps.DefinitionSteps.givenTheUserIsOnTheWikionaryHomePage(DefinitionSteps.java:17) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.jbehave.core.steps.StepCreator$ParametrisedStep.perform(StepCreator.java:595) 
at org.jbehave.core.embedder.StoryRunner$FineSoFar.run(StoryRunner.java:566) 
at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:546) 
at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:510) 
at org.jbehave.core.embedder.StoryRunner.runStepsWithLifecycle(StoryRunner.java:476) 
at org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:336) 
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:239) 
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:182) 
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:266) 
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:233) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
+0

完全なスタックトレースを共有できますか? –

+0

doneスタックトレースを追加 – Hendrione

+0

@KrishnanMahadevan – Hendrione

答えて

1

あなたは単にJVM引数-Dwebdriver.driver=chromeを経由して、ブラウザの風味を渡すのブラウザを切り替えることができるようにするためにあなたは、グリッドを使用していない、すなわち、ローカルモードで作業している場合。 、あなたは(Internet Explorer用)[IEDriverServer.exeドライバのバイナリに対応していることを確認してください(Chromeの)ChromeDriver.exeとGeckodriver.exe(Firefoxの新しいバージョンのためとSelenium 3.0.1を使用している場合)してください

の場合グリッドノード(グリッドハブではない)が別のマシンで動作するSelenium Gridを使用しています。つまり、MachineAからSerenityテストを開始し、GridCノードでMachineCを実行しているとします。 IEDriverServer/ChromeDriver/GeckoDriverバイナリの場所を、MachineCのPATH環境変数(つまり、Seleniumノードが稼働しているマシン)に追加しました。

バイナリの設定とその操作に関する追加の手順。

からhttps://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#installing

  • ChromeDriver -
  • IEDriverServer https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver(セクションSetting up the Marionette executableからスタート)あなたはJVM引数を使用する必要があります-Dwebdriver.remote.url=http://GridIp:GridPort/wd/hub

    あなたがいくつかの属を探しているなら以下のリンクを参照してください設定方法セレングリッドにし、それに取り組む上リットル命令:

    Serenityに関するすべての議論はThucydidesSystemProperty.javaにあります。翻訳ロジックは小文字に変換されているようですが、すべて-.に置き換えます

  • +0

    ありがとうございましたそれは完全な答えだった:D – Hendrione

    関連する問題