在空手道中调用另一个包含 webdriver 步骤的功能
calling another feature containing webdriver steps in Karate
我在想什么是空手道测试的最佳实践,以在其他功能中重用一些包含硒步骤的功能。换句话说,我想使用一些包含网页浏览部分的场景,并在其他功能中调用它们。
从我的角度来看,这很重要:
- 将 selenium 部分放在一起,否则它们将散布在所有特征中
- 有一个点以防网络发生变化ui(选择器等)
我试过定义一个特征"A":
- 将 url 设置为使用浏览器打开(在一个变量中,比方说 my_url)
- 调用功能 B 中的场景
功能 "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
我在想什么是空手道测试的最佳实践,以在其他功能中重用一些包含硒步骤的功能。换句话说,我想使用一些包含网页浏览部分的场景,并在其他功能中调用它们。
从我的角度来看,这很重要:
- 将 selenium 部分放在一起,否则它们将散布在所有特征中
- 有一个点以防网络发生变化ui(选择器等)
我试过定义一个特征"A":
- 将 url 设置为使用浏览器打开(在一个变量中,比方说 my_url)
- 调用功能 B 中的场景
功能 "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