Selenium 要根据cucumber中的场景使用一个具有不同值的标记吗

Selenium 要根据cucumber中的场景使用一个具有不同值的标记吗,selenium,junit,cucumber,Selenium,Junit,Cucumber,我们的自动化框架中有一个清理钩子,它是从cucumber特性文件中标记出来的 例如 @抄送任务清理挂钩注册 情景:个人可以注册 当我选择上下文菜单时 然后,我可以将患者登记到“注册A” 钩子(@cc_task_clean_up_hook)的实现是 所以,就像我们需要另一个场景一样 场景:个人可以注册 当我选择上下文菜单时 然后我可以将患者登记到“登记B” 因此,我们可以实现另一个钩子,如下所示,不同之处在于参数类型“enrollB” 那么,是否可以根据传递的参数合并这两个方法并只编写一个通用清理

我们的自动化框架中有一个清理钩子,它是从cucumber特性文件中标记出来的

例如

@抄送任务清理挂钩注册 情景:个人可以注册 当我选择上下文菜单时 然后,我可以将患者登记到“注册A”

钩子(@cc_task_clean_up_hook)的实现是

所以,就像我们需要另一个场景一样

场景:个人可以注册 当我选择上下文菜单时 然后我可以将患者登记到“登记B”

因此,我们可以实现另一个钩子,如下所示,不同之处在于参数类型“enrollB”


那么,是否可以根据传递的参数合并这两个方法并只编写一个通用清理挂钩?非常感谢你的帮助

您可以将场景对象添加到传递给after钩子的参数中。框架将向方法注入当前正在执行的场景

public void afterMethod(Scenario scenario){}
  • 您可以使用
    场景
    对象的
    getSourceTagNames()
    方法,该方法将返回当前执行场景的标记集合。从该集合中,您可以确定标签是否以“enroll_A”或“enroll_B”结尾

  • 或者可以使用
    getName()
    方法返回当前场景的描述。因此,您将获得“个人可以注册A”或“P…”。。。。。报名。只需要再次解析

  • 您可以修改
    ,然后修改步骤
    ,将注册类型传递给步骤定义。将其存储在变量中。在后钩子中使用此变量。但这需要after钩子在同一个类中

  • 您还需要将Afterhook的
    值参数更改为-
    {“@toc\u task\u clean\u hook\u unrolla,@toc\u task\u clean\u hook\u unrolb”}

    一个观察结果是,这两个步骤似乎相同,如果是这样,那么您是否考虑过场景提纲

    @After(value = "@toc_task_clean_up_hook_enrollB", order = HookOrder.CLEAN_UP_APP_AFTER)
    public void cleanUpTOC() {
        this.patientContextPage.selectedContextMenuItem("Pathway");
        this.pathWayPage.selectReferences("Enroll in Pathway");
        this.pathWayPage.deactivateEnrollment("enrol_B", "Withdrawn");
    }
    
    public void afterMethod(Scenario scenario){}