问题标签 [webdriver-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6773 浏览

javascript - WebDriverIO Selenium 将命令行参数从 config.js 文件传递​​到 Chrome

我需要 chrome 使用 disable-web-security 标志运行我的 UI 测试。如何使用 wdio.config 文件 ( http://webdriver.io/ ) 注入任何命令。

0 投票
2 回答
1208 浏览

javascript - webdriver.io 异步问题 - 单击一个元素,然后输入文本

我试图在我的自动化测试脚本中考虑“选择的选择”。我正在使用 webdriver.io 并参考以下 API 信息: http ://webdriver.io/api.html

我需要单击“选择”世界中的“a.chosen-single”,它等于用户单击选择。这将用户集中在文本输入上(它允许用户过滤选择选项,因此为什么选择很酷),然后我需要模拟用户输入文本。

问题是我编写的脚本导致所有选择的选择被单击,然后输入键。这意味着他们的文本只会被输入到最终的选择输入中。

单击元素后,我插入了一个 pause() 。我希望每次点击后都会发生暂停,但暂停只会在最后一个元素被点击时发生,并且所有元素的键都在最后一起键入,因此最后一个元素的值为 'FIL12 '

这是我在终端中得到的读数:

我不知道如何确保在输入击键之前下一个任务不会排队。请帮忙。

0 投票
0 回答
1201 浏览

javascript - 页面重新加载后 webdriver.io 继续脚本

我正在用 webdriver.io 编写一个自动化脚本来填写网页上的输入/选择并截取屏幕截图。如果用户操作(例如更改选择的值)导致页面在自动化脚本执行过程中加载怎么办?有没有办法在脚本中继续你离开的地方(假设当时已经填写了一些输入,并且它们通过会话数据保留了它们的值,但你想继续填写其余部分)。

据我所见,一旦该页面重新加载,脚本就会停止执行。

如果无法从中断的地方继续,那么如何通过检测页面加载然后重新执行脚本从头开始触发脚本?

回复评论:我认为我不需要粘贴代码(尽管我会),因为问题实际上只是当页面加载发生在脚本执行过程中时如何通过 webdriver.io 检测页面加载而不是由脚本本身发起。

更新!!:我设法使用 waitForExist() 解决了这个问题,并在与它交互之前简单地等待每个输入/选择存在。这并不理想,但它有效。如果有人有更好的解决方案,请告诉我!

这是代码:

0 投票
0 回答
1619 浏览

javascript - WebdriverIO - 如何确定页面加载或刷新是否发生

我正在使用带有 Javascript 和 Mocha 的 WebdriverIO 来创建 UI 测试框架。为此,我试图在每次页面加载或页面刷新时捕获屏幕截图。有人可以告诉我这是否可以使用 WebdriverIO 或其他方式来实现?

相关细节:页面不是一直使用 driver.url() 加载的。使用 driver.url() 到达启动 URL,然后通过单击页面上的链接或执行导致另一个页面加载的操作来进行所有导航。另请注意,页面加载也会在其他条件下发生,例如,当单击“保存”按钮时,再次加载相同的页面(刷新)。我试图在每次页面加载或刷新时捕获屏幕截图,而不管可能导致它的任何操作。这就是为什么我想在全局层面抽象出这个过程,而不是在整个代码库的多个地方调用 driver.saveScreenShot()。

0 投票
1 回答
722 浏览

javascript - Phantom.js Webdriver.io 错误:SyntaxError:DOM 异常 12

我们正在使用 webdriver.io 和 phantom.js 进行一些测试。以下工作正常,给了我一个元素列表:

但我继续我的下一个测试,它做了很多相同的事情:

我得到了 deviceList 对象。如果我检查它,值成员是一个数组,正如预期的那样。但是第二次我尝试访问该数组,即使只是将它分配给另一个变量,我也会收到以下错误:

这真让我抓狂。有关于 DOM Exception 12 错误的报告,但它们似乎不适用于我正在做的事情,其中​​许多是指旧版本的 Phantom.js。我们在 1.9.8。

0 投票
0 回答
337 浏览

javascript - webdriverio,Jasmine Multiple异步它在describe中不执行

我是 jasmine 和 webdriverio 的新手,我试图在“描述”中执行多个“it”函数,但不能执行多个 it 语句。

下面是代码。

下面是终端输出

另一个它没有被执行。如果我删除其中的所有回调(完成、完成、完成)。甚至在测试执行之前,所有这些都通过了。

如果我删除所有回调,以下是输出

让我知道这里出了什么问题以及应该如何执行异步测试

0 投票
1 回答
3384 浏览

selenium - Selenium Chrome 驱动程序无法解析 getElementRegion 的值

使用 chrome 驱动程序运行我的 selenium 测试时,我从 chrome 驱动程序收到以下错误。该测试适用于 Firefox。

未知错误:无法解析 getElementRegion 的值

这是代码,尝试单击提交按钮时失败。我正在使用 selenium-standalone 运行我的服务器,指定 chromedriverselenium-standalone start --drivers.chrome.version=2.8和 webdriverIO

0 投票
2 回答
1245 浏览

selenium - 如何创建 webdriver.io 自定义函数?

我正在使用webdriver.iowithmocha.js并且我需要多次创建一些操作,并且我不想复制我的代码,所以我想创建自定义函数并在每个 mocha 测试中调用该函数(它)...

例如:

所以就像你在这里看到的一样,我复制了我的登录代码......

有任何方法可以创建像登录这样的函数并在测试(它)中调用它:

谢谢。

0 投票
0 回答
386 浏览

node.js - 如何使用 webdriver.io 和 selenium 在 mocha 测试中最好地构建页面流?

我想使用 mochajs、webdriver.io 和 selenium 服务器测试电子商务应用程序。让我们以结帐为例,假设我想自动化测试多个变体。最直接的方法是做类似的事情

这里的缺点是,如果出现问题,您只能看到失败的案例,这可能相对复杂,因为您必须经过很多步骤才能下订单。因此我在想类似的东西

所以基本上我误将it我的测试分割成页面,这样我就可以看到哪里出了问题。但是,如果您想象这样的 10 个测试,那将是很多带有大量冗余的“测试”。

我现在的问题是,是否有任何关于如何解决这个问题的最佳实践或生产经验(我假设我正在尝试做的是非常基本的),因为我们现在仍然可以调整方法。

任何反馈将不胜感激。

0 投票
1 回答
5937 浏览

selenium-webdriver - WebdriverIO - 如何向 Jasmine 测试发送参数?

我有一堆Webdriver.io /Selenium 测试,我正在使用 jasmine 测试框架来编写我的测试,所以我有一个 wdio.conf.js 文件,我已按照这些说明配置为使用 jasmine

问题是我正在测试一个高度动态/可配置的基于广告/营销的网络应用程序,并且需要我传递大量配置信息,以便测试知道要测试什么。例如在命令行我想运行类似的东西:

我可以修改 wdio.conf.js 文件中的“onPrepare”函数/事件来获取这些参数,如下所示:

...但我不知道如何将这些传递给我的茉莉花测试。我已经尝试从 process.argv 中读取,但缺少 campaignId 和 productId 参数,例如

如何将自定义参数/参数传递给我的 jasmine 测试?我可以将它们写入 onPrepare 中的文件,然后在 jasmine 测试中读取该文件,这似乎有点 hacky。