2016-07-20 41 views
1

時生成每個獨立的節點硒的index.html jbehave報告文件,我有一個JBehave項目中需要使用TestNG和硒電網整合其使用thisthisthis代碼github (抱歉,因爲我不能通過整個代碼,所以只顯示參考)我已經完成了JBehave + TestNG + Selenium網格。JBehave + TestNG的硒+網 - 使用單一jbehave故事文件

但我的問題是,當使用單個Story文件在不同的Selenium節點執行jbehave報告index.html文件只顯示任何一個節點。我想爲單個或多個jbehave報告index.html文件中的每個節點分別生成報告。我不應該運行兩個故事文件和所有,我如何顯示單個jbehave報告html文件中的每個Selenium節點的單獨報告。

我知道jbehave使用freemarker進行報告生成,但我不知道如何覆蓋它並顯示每個硒節點的報告。任何想法請分享。

在此先感謝。

回答

0

最後嘗試了一種方法,發現它現在是暫時的解決方案。

  1. 創建一個字符串變量,獲取Story Runner類中的詳細信息。
RemoteWebDriver driver = (RemoteWebDriver) DriverManager.getDriver(); 
     String hostname = hng.getHostName(driver.getSessionId()); 
     String browserName = driver.getCapabilities().getBrowserName(); 
     String browserVersion = driver.getCapabilities().getVersion(); 
  • 然後傳遞值到故事嵌入式類,如下所示。
  • Embedder storyEmbedder = new StoryEmbedder(driver, browserName + "v" + browserVersion); 
    
  • 在故事嵌入式類分配該字符串值如下所示
  • private WebDriver driver; 
        private static String name; 
        public StoryEmbedder(WebDriver driver, String hostname) { 
          this.driver = driver; 
          this.name = hostname; 
         } 
    
  • 然後在Configuration方法裏面的useStoryReporterBuilder函數中添加下面的代碼。
  • .withRelativeDirectory(name) //where 'name' is the String variable refer above step. 
    
  • 像回報將是如下
  • return new MostUsefulConfiguration() 
            .useStoryControls(new StoryControls().doDryRun(false).doSkipScenariosAfterFailure(false)) 
            .useStoryLoader(
              new LoadFromClasspath(embedderClass)) 
            .useStoryParser(
              new RegexStoryParser(
                examplesTableFactory)) 
            .useStoryPathResolver(new UnderscoredCamelCaseResolver()) 
            .useStoryReporterBuilder(
              new StoryReporterBuilder().withCodeLocation(CodeLocations.codeLocationFromClass(embedderClass)) 
                .withDefaultFormats().withPathResolver(new ResolveToPackagedName()) 
                .withViewResources(viewResources).withReporters(new MyStoryReporter()) 
                .withFormats(Format.CONSOLE, Format.TXT, Format.HTML, Format.XML).withFailureTrace(true) 
                .withFailureTraceCompression(true).withCrossReference(xref).withRelativeDirectory(name)).useParameterConverters(parameterConverters) 
            // use '%' instead of '$' to identify parameters 
            .useStepPatternParser(new RegexPrefixCapturingPatternParser("%")); 
    

    現在我可以基於瀏覽器和瀏覽器版本有兩個文件夾。

    如果你們有更好的答案,請通過發佈幫助。 在此先感謝。

    1

    我不認爲結合Jbehave和TestNG是一個更好的主意。 Jbehave支持這些故事並使用testng,這樣就沒用了,比如分組,參數等。現有的JunitStories類可以與Jbehave一起使用。如果您使用它來組織您的測試結果,則可以使用jbehave定製的Allure報告工具(link)。你可以使用Jbehave + Allure + Selenium Grid架構。