Automated tests 空手道-如何将变量值放入驱动程序配置(在JS中配置,在features中读取值-后台)

Automated tests 空手道-如何将变量值放入驱动程序配置(在JS中配置,在features中读取值-后台),automated-tests,karate,Automated Tests,Karate,我无法在驱动程序配置(功能文件背景)中使用变量 1) 变量在JS配置文件(karate config.JS)中定义: 2) 在功能文件(背景部分)中,我需要根据变量值修改驱动程序: configure driver = { type: driverType, executable: driverExecutable, start: driverStart, port: driverPort} 要获得与此(本工程)相同的结果: 3) 当我在场景中写入变量“print driverType”时,值

我无法在驱动程序配置(功能文件背景)中使用变量

1) 变量在JS配置文件(karate config.JS)中定义:

2) 在功能文件(背景部分)中,我需要根据变量值修改驱动程序:

configure driver = { type: driverType, executable: driverExecutable, start: driverStart, port: driverPort}
要获得与此(本工程)相同的结果:

3) 当我在场景中写入变量“print driverType”时,值被正确打印:

[print] geckodriver
但驱动程序配置失败:

WARN  com.intuit.karate - unknown driver type: driverType, defaulting to 'chrome'

ERROR com.intuit.karate - driver config / start failed: class java.lang.String cannot be cast to class java.lang.Boolean (java.lang.String and java.lang.Boolean are in module java.base of loader 'bootstrap'), options: {type=chrome, executable=driverExecutable, start=driverStart, port=driverPort, target=null}
您能帮我解决这个问题,以便能够更改JS文件中的驱动程序设置(通常-如何在驱动程序配置中插入变量)

谢谢。

只需做以下更改:

* configure driver = { type: '#(driverType)', executable: '#(driverExecutable)', start: '#(driverStart)', port: '#(driverPort)' }
或者这也应该起作用:

* configure driver = ({ type: driverType, executable: driverExecutable, start: driverStart, port: driverPort })
这里有一个微妙的区别,解释如下:

顺便说一下,您也可以在
karate config.js
中进行如下配置:

config.driverConfig = { type: 'geckodriver', executable: 'geckodriver' };
这将在功能文件中起作用:

* configure driver = driverConfig
如果需要,您可以在
karate config.js
中完成driverConfig:

* karate.configure('driver', { type: 'geckodriver', executable: 'geckodriver' });

谢谢你@Peter,它工作得很好,我已经尝试了上面提到的所有解决方案。非常感谢你的帮助!注意:最后一行应该是“driver”而不是“driverConfig”。@RadimBukovský!谢谢你接受答案!
* configure driver = driverConfig
* karate.configure('driver', { type: 'geckodriver', executable: 'geckodriver' });