Selenium webdriver JBehave+;TestNG+;Selenium Grid-使用单个jbehave故事文件时,为每个单独的Selenium节点生成jbehave index.html报告文件

Selenium webdriver JBehave+;TestNG+;Selenium Grid-使用单个jbehave故事文件时,为每个单独的Selenium节点生成jbehave index.html报告文件,selenium-webdriver,testng,bdd,selenium-grid,jbehave,Selenium Webdriver,Testng,Bdd,Selenium Grid,Jbehave,我有一个JBehave项目,其中需要与使用的TestNG和Selenium网格集成,并在github中编写代码(很抱歉,因为我无法通过全部代码,所以只显示参考资料),我已经完成了JBehave+TestNG+Selenium网格 但我的问题是,当在不同的Selenium节点中使用single Story文件执行时,jbehave reportindex.html文件仅针对任何一个节点显示。我希望在一个或多个jbehave report index.html文件中为每个节点创建单独的报告。我不应该

我有一个JBehave项目,其中需要与使用的TestNG和Selenium网格集成,并在github中编写代码(很抱歉,因为我无法通过全部代码,所以只显示参考资料),我已经完成了JBehave+TestNG+Selenium网格

但我的问题是,当在不同的Selenium节点中使用single Story文件执行时,jbehave report
index.html
文件仅针对任何一个节点显示。我希望在一个或多个jbehave report index.html文件中为每个节点创建单独的报告。我不应该运行两个故事文件,我如何在一个jbehave报告html文件中为每个Selenium节点显示单独的报告

我知道jbehave用于生成报告,但我不知道如何覆盖它并为每个selenium节点显示报告。任何想法请分享


提前感谢。

最后尝试了一种方法,发现它现在是一个临时解决方案

  • 创建一个字符串变量,用于在Story Runner类中获取详细信息
  • 然后将该值传递给Story Embedded类,如下所示
  • 在Story Embedded类中,指定该字符串值,如下所示
  • 然后在useStoryReporterBuilder函数内的配置方法中添加以下代码
  • 类似的回报如下
  • 现在我可以有两个基于浏览器和浏览器版本的文件夹

    如果你们有更好的答案,请通过发布来帮助我们。
    提前感谢。

    我认为将Jbehave和TestNG结合起来不是一个更好的主意。Jbehave支持这些故事,使用testng没有任何用处,比如分组、参数等。现有的JUnitStores类可以很好地与Jbehave配合使用。如果您使用它来组织测试结果,您可以使用jbehave()的定制诱惑报告工具。您可以使用Jbehave+Allure+Selenium网格体系结构

    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;
            }
    
    .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("%"));