2016-07-20 31 views
1

mit habe ich ein JBehave Projekt, bei dem mit TestNG und Selenium Grid integrieren müssen, die this verwenden, this und this Code in GitHub (Entschuldigung, da ich den gesamten Code nicht überschreiten kann, so dass nur die Referenz) Ich habe das JBehave + TestNG + Selen Grid getan.JBehave + TestNG + Selenium Grid - erzeugen JBehave index.html Berichtsdatei für jeden separaten Selen Knoten, wenn einzelne JBehave Story-Datei

Aber mein Problem ist, wenn einstöckigen Datei mit dem in verschiedenen Selenium Knoten auszuführen JBehave zu berichten index.html Datei nur für jeden einzelnen Knoten dargestellt ist. Ich möchte einen separaten Bericht für jeden Knoten in einer einzelnen oder mehreren jbehave-Datei index.html erstellen. Ich sollte nicht mit zwei Story-Dateien und allem laufen, wie kann ich separaten Bericht für jeden Selenium-Knoten in einer einzigen jbehave-Berichts-HTML-Datei zeigen.

Ich weiß, dass die jbehave freemarker für ihre Berichtgenerierung verwenden, aber ich habe keine Ahnung, wie Sie dies überschreiben und Bericht für jeden Selen Knoten zeigen. Irgendeine Idee teilen Sie bitte.

Vielen Dank im Voraus.

Antwort

0

Schließlich versuchte einen Weg und fand es eine temporäre Lösung für ihn jetzt.

  1. Erstellen Sie eine String-Variable, die die Details in der Story Runner-Klasse abruft.
RemoteWebDriver driver = (RemoteWebDriver) DriverManager.getDriver(); 
     String hostname = hng.getHostName(driver.getSessionId()); 
     String browserName = driver.getCapabilities().getBrowserName(); 
     String browserVersion = driver.getCapabilities().getVersion(); 
  1. dann diesen Wert auf die Geschichte Embedded-Klasse übergeben, wie unten gezeigt.
Embedder storyEmbedder = new StoryEmbedder(driver, browserName + "v" + browserVersion); 
  1. in der Story Embedded Klasse zuordnen, den Wert String wie unten
gezeigt
private WebDriver driver; 
    private static String name; 
    public StoryEmbedder(WebDriver driver, String hostname) { 
      this.driver = driver; 
      this.name = hostname; 
     } 
  1. Fügen Sie dann in der Konfigurationsmethode innerhalb der useStoryReporterBuilder-Funktion den folgenden Code hinzu.
.withRelativeDirectory(name) //where 'name' is the String variable refer above step. 
  1. wie die Rückkehr wird wie folgt
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("%")); 

Jetzt kann ich zwei Ordner haben basierend auf Browser und Browser-Version .

Wenn Sie eine bessere Antwort haben, bitte helfen Sie, indem Sie es veröffentlichen. Vielen Dank im Voraus.

1

Ich denke, die Kombination von Jbehave und TestNG ist eine bessere Idee. Jehave unterstützt die Geschichten und nutzt Tests, da wäre es nutzlos, wie Gruppierung, Parameter usw. Es gibt vorhandene JunitStories-Klasse, die mit Jbehave funktioniert.Wenn Sie es zum Organisieren Ihrer Testergebnisse verwenden, können Sie das angepasste Allure-Berichtstool für jbehave (link) verwenden. Sie können Jbehave + Allure + Selenium Grid Architektur verwenden.