2017-05-04 18 views
0

我目前正在运行的我的小黄瓜测试用硬编码网址browser.url("http://www.x.com");如何将命令行中的URL传入我的Gherkin测试?

而且我通过gherkin start [url]

运行我的测试中是否有我可以把我在命令行中输入开始我的测试任何URL的方式并让它代替我的browser.url调用中的硬编码网址?我使用Selenium-webdriver和docker来执行写在小黄瓜上的测试。

回答

0

简短的回答是NO ,很遗憾。正如您所指出的,您的网址中有硬编码值。

但是,应该有变通方法方便您的问题,并有轻微的变化,可以让你到你想要的结果。

由于您使用WebdriverIO,这基本上是一个绑定硒实施的NodeJS,我们实际上可以利用节点的集结中的对象,在我们的例子中global objectprocess.env

首先,在您的测试中,继续使用browser.url("http://www.x.com");中的URL替换变量,如下所示:browser.url(myUrl);

然后,声明在你的程序头变量:var myUrl = process.env.URL ? process.env.URL : "http://www.x.com"。这将告诉节点:“看,如果你有这个流程环境变量设置,然后返回它,否则,只要给我你以前的(你的硬编码值)”。

最后,运行命令行测试时,只需添加变量,您需要的值,例如:

$ URL="yourUrlHere" gherkin start 

2.由于您使用WebdriverIO,我会强烈建议使用他们的完整工具套件来利用更好的测试体验。 *看起来悲伤对未使用的wdio.config.js文件 *

因此,我将在他们的Testrunner建议采取一看,通过训练去的部分。如果你热衷于使用小黄瓜,不要担心! WebdriverIO与黄瓜(以及摩卡,或茉莉花)使用小黄瓜漂亮地整合。然后

您的问题将转变为通过wdio.config.js文件的简单配置的变化。

让我知道这是否有帮助。我大概可以鼓起一些其他解决方案。干杯!

+0

感谢这个答案。我目前受到工作的抨击,但会尽快实施这一点,只要我有机会,并与我的结果回到你身边。 – Billy

+0

好了,所以我能够给这一个镜头,但它给我'类型错误的错误:HTTP://www.url.com.url不是function'。对此有何想法?我实现了上面所说的一切,然后通过从'process.env.URL'代码中移除'.URL',然后移除另一个'process.env'。要么有相同的错误,要么超时 – Billy

+0

@Billy你可以编辑你的文章并添加一些更多的信息吗?这将使调试更容易,因此我们可以找到解决方案。 'package.json'依赖将是首先想到的,否则我会犯同样的错误,并提出一个不适合你的设置的解决方案。 您是否考虑在使用** WebdriverIO **设置时通过'wdio wdio.config.js'运行测试? – iamdanchiv