Selenium webdriver 为什么scenario.getName()在@Before hook中只返回最后一个场景名称?

Selenium webdriver 为什么scenario.getName()在@Before hook中只返回最后一个场景名称?,selenium-webdriver,cucumber,Selenium Webdriver,Cucumber,我用Cucumber&TestNG在SeleniumWebDriver中创建了一个框架,对于报告部分,我使用了扩展报告 在@Before钩子中,我想取每个场景的名称。所以我使用的是scenario.getName()方法。所以对于4个场景,我想通过这个方法得到4个不同的场景名称,但每次我只得到最后一个场景名称。例如:下面是我的功能文件: 下面是我使用@Before-hook的步骤定义方法。 注意:在@Before hook中,我使用了cucumber.api.Scenario,因为有两个场景

我用Cucumber&TestNG在SeleniumWebDriver中创建了一个框架,对于报告部分,我使用了扩展报告

在@Before钩子中,我想取每个场景的名称。所以我使用的是scenario.getName()方法。所以对于4个场景,我想通过这个方法得到4个不同的场景名称,但每次我只得到最后一个场景名称。例如:下面是我的功能文件:

下面是我使用@Before-hook的步骤定义方法。

注意:在@Before hook中,我使用了cucumber.api.Scenario,因为有两个场景类,一个来自扩展报告,另一个来自cucumber.api,所以我导入了第一个,并使用了第二个完整的名称

现在,对于@Before hook中的S.O.p函数,它应该为每个迭代逐个打印场景名称。但是,每次我只得到最后一个场景名称。我哪里做错了?

前3个场景大纲被忽略。原因是他们没有任何示例表。只有最后一个场景大纲附带了一个示例表并运行

最后一个场景大纲的名称为“User Login”,在示例表的每一行中重复4次

将示例表复制到每个场景大纲中

Scenario Outline: <title>
Given User is on....

Examples
|username |....| title |
...............| valid login |
场景大纲:
给定用户已打开。。。。
例子
|用户名|…|标题|
有效登录|

我认为您应该指定,它不需要将整个表复制到其他三个场景中,而只需要将标题行和与每个场景相关的一行复制到该场景中,否则它将为四个场景中的每一个运行四次。@BillHileman Yeah说得通。我想我错过了。实际上,仔细看,只需要一个场景大纲。所有4个场景大纲中的步骤都是相同的。这个名字也可以移到示例表中。谢谢Grasshopper和Bill Hileman。当我将带有标题行和相应数据的示例表复制到每个场景大纲中时,它起到了作用@Grasshopper,你在上一篇评论中说,这个名字也可以移到示例表中。你这是什么意思?@BongCule u只能使用一个场景大纲。检查更新的答案。