在空手道中调用另一个包含 webdriver 步骤的功能

calling another feature containing webdriver steps in Karate

我在想什么是空手道测试的最佳实践,以在其他功能中重用一些包含硒步骤的功能。换句话说,我想使用一些包含网页浏览部分的场景,并在其他功能中调用它们。

从我的角度来看,这很重要:

我试过定义一个特征"A":

功能 "B" 在浏览器中打开 url 并执行某些操作,例如单击按钮并等待 div:

Given driver my_url
When waitForEnabled(<button selector>).click()
Then match waitFor(<div selector>).text == 'Signing complete'

此解决方案的问题是 运行 功能 A,它调用功能 B 并且工作正常,但它不会在功能结束时关闭 webdriver。 可能使用钩子,在功能 B 中的场景之后关闭 webdriver,可能是一个解决方案,但我不确定这是最好的做法。

我尝试在 IDE (IntelliJ Idea) 中启动该功能,而不是使用 maven。

那么您是否尝试过其他解决方案?你有hints/tips建议吗?

我认为在测试流程中明确关闭浏览器是可以的。

或者您可以使用来自顶级调用功能的 afterScenario 挂钩:https://github.com/intuit/karate#hooks

您也可以选择拨打Java代码:

请注意,Karate 现在有 Webdriver 的替代品,Karate 会自动关闭浏览器:https://github.com/intuit/karate/tree/master/karate-core