Karate 空手道-与机器人混合时如何终止驱动程序实例?

Karate 空手道-与机器人混合时如何终止驱动程序实例?,karate,Karate,我有一个结合了司机和机器人的测试。但是,我需要在调用robot之前终止驱动程序实例。即使使用显式驱动程序.close(),实例仍保持活动状态。下面是一个示例(create-input.feature调用驱动程序): 显式关闭后,驱动程序实例保持活动状态: INFO com.intuit.karate - [print] >>>>>>>>>>>>>>>>>>>BEFORE CLOSE

我有一个结合了司机和机器人的测试。但是,我需要在调用robot之前终止驱动程序实例。即使使用显式驱动程序.close(),实例仍保持活动状态。下面是一个示例(create-input.feature调用驱动程序):

显式关闭后,驱动程序实例保持活动状态:

INFO  com.intuit.karate - [print] >>>>>>>>>>>>>>>>>>>BEFORE CLOSE>>>>>>>>>>>>>> com.intuit.karate.driver.chrome.Chrome@d3324b
09:47:24.064 [main]  DEBUG c.intuit.karate.driver.DriverOptions - >> {"id":83,"method":"Page.close"}
09:47:24.069 [nioEventLoopGroup-2-1]  DEBUG c.intuit.karate.driver.DriverOptions - << {"id":83,"result":{}}
09:47:24.072 [main]  INFO  com.intuit.karate - [print] >>>>>>>>>>>>>>>>>>>AFTER CLOSE>>>>>>>>>>>>>> com.intuit.karate.driver.chrome.Chrome@d3324b
INFO com.intuit.karate-[打印]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>关闭前。Chrome@d3324b
09:47:24.064[main]调试c.intuit.karate.driver.DriverOptions->{“id”:83,“方法”:“Page.close”}
09:47:24.069[nioEventLoopGroup-2-1]调试c.intuit.karate.driver.DriverProptions->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>关闭后。Chrome@d3324b
当达到机器人逻辑时,它抛出一个错误:

* window(windowName)
>>>> js failed:
01: window(windowName)
<<<<
org.graalvm.polyglot.PolyglotException: ReferenceError: "window" is not defined
- <js>.:program(Unnamed:1)

09:47:27.917 [main]  DEBUG c.intuit.karate.driver.DriverOptions - >> {"id":84,"method":"Page.captureScreenshot"}
09:47:57.919 [main]  ERROR c.intuit.karate.driver.DriverOptions - << timed out after milliseconds: 30000 - [id: 84, method: Page.captureScreenshot]
* window(windowName)
scenario [run] failed
failed to get reply for: [id: 84, method: Page.captureScreenshot]
09:47:58.056 [main]  WARN  com.intuit.karate - 'driver' is active, use 'robot.' prefix for robot methods
*窗口(windowName)
>>>>js失败:
01:窗口(windowName)

您是否尝试过
driver.quit()

如果这不起作用(应该如此!),您可以提交一个问题,但我坚持认为您应该提供一种复制方法:


作为一种解决方法-如果您能提供所需的控制,您可以进行试验:

一如既往,感谢Peter的及时回复和改进。我用你的应用软件对它进行了测试,效果如预期。以下是我使用的简化测试:

Feature: mixing driver and robot

Background:
  * configure driver = { type: 'chrome', showDriverLog: true }

Scenario: terminate driver before invoking robot
  * driver 'https://google.com'
  * input("input[name=q]", 'karate dsl')
  * submit().click("input[name=btnI]")
  * waitForUrl('https://github.com/intuit/karate')
  * quit()

  * robot { window: 'Calculator', fork: 'calc', highlight: true, highlightDuration: 500 }
  * click('Clear')
  * click('One')
  * click('Plus')
  * click('Two')
  * click('Equals')
  * match locate('#CalculatorResults').name == 'Display is 3'
  * screenshot()
  * click('Close Calculator')
Feature: mixing driver and robot

Background:
  * configure driver = { type: 'chrome', showDriverLog: true }

Scenario: terminate driver before invoking robot
  * driver 'https://google.com'
  * input("input[name=q]", 'karate dsl')
  * submit().click("input[name=btnI]")
  * waitForUrl('https://github.com/intuit/karate')
  * quit()

  * robot { window: 'Calculator', fork: 'calc', highlight: true, highlightDuration: 500 }
  * click('Clear')
  * click('One')
  * click('Plus')
  * click('Two')
  * click('Equals')
  * match locate('#CalculatorResults').name == 'Display is 3'
  * screenshot()
  * click('Close Calculator')