问题标签 [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 投票
1 回答
1167 浏览

selenium - RuntimeError:无法连接到硒服务器

我有一个网络应用程序,我正在尝试通过 Jasmine使用WebDriver IO进行测试。目前,我已经像这样设置我的测试:

我正在通过以下任务从 gulp 运行此测试:

当我通过 运行此任务时gulp test,出现以下错误:

我不明白为什么会收到此错误。

0 投票
1 回答
683 浏览

node.js - 等待执行条件后WebdriverIO截图失败

我正在尝试编写一个非常简单的 WebdriverIO 脚本,该脚本将访问一个 URL,等待 JS 中的某些条件为真(例如,设置了一个全局变量)并在它为真时截取屏幕截图。但是waitUntil抛出一个错误,说“CommandError:承诺永远不会以真实的价值解决”。以下是我的脚本的简化版本:

我的实际情况当然不仅仅是“ return true;”,但这表明执行显然会返回一个真实的值。

如果我删除对 的调用screenshot(),则不会出现错误。

我尝试为 设置一个高超时值waitUntil(),并尝试从调用中返回实际的 result.value .execute()——两者都没有帮助。

0 投票
2 回答
1568 浏览

meteor - 有没有办法等待另一个 WebDriverIO 承诺链完成?

我正在尝试在 Cucumber 中构建一个测试步骤,该步骤将登录具有给定角色的测试用户。我的方法是尝试查看是否存在“退出”选项并单击它,然后尝试登录。问题是承诺结构并不能保证首先发生注销,并且由于我不能假设我总是首先登录,所以我需要一种方法来基本上等到发生这种情况后再继续。

我的测试步骤如下所示:

有没有办法在之后停止myBrowser.waitForVisible('#appSignOut')?我只是错过了预期的用途吗?

更新

我尝试了一种新方法,但仍然无法正常工作:

这里的逻辑是:

  1. #main_menu 可见时(页面已加载)
  2. 然后 - 如果存在#appSignOut,请单击它
  3. 然后 - 等待#appSignIn 变为可见,然后完成登录

我得到的错误是:

但我认为这些都不起作用。弹出式浏览器的速度太快了,我看不到发生了什么,而且 cucumber.log 也没有给我任何关于它在做什么的好的指示。

0 投票
1 回答
1460 浏览

javascript - 如何单击包含变量的链接进入“href”属性?

我正在使用 Selenium + WebdriverIO 编写验收测试。我对此有一些问题 - 我无法点击此链接

transactionId - 它是一个包含交易 ID 的变量。我的 HTML 代码:

每个“tr”标签都具有与您在上面看到的相同的结构,并且“a”标签在 href 属性中具有适当的 id。主要问题在于这段代码:

因为它返回

Girish Sortur 感谢您的回答,但我只找到了一个使用此代码的解决方案:

0 投票
1 回答
154 浏览

node.js - 如何在 node.js 中随意运行 Webdriver.io

我在 node.js 中运行它

但是我每次迭代都会得到一个 FireFox 浏览器。有没有办法在没有浏览器的情况下运行它但具有浏览器功能(即浏览器不打开)。

谢谢

0 投票
2 回答
3292 浏览

node.js - webdriverio 在设置其值后抛出元素不可见错误

第一次尝试 nodejs 和 webdriverio。在 watir-webdriver 或 selenium-webdriver gems 中尝试时,这似乎很简单,但这让我在 webdriverio 中感到困惑。为什么当驱动程序已经找到元素并设置值时出现此错误

我得到的错误是

0 投票
2 回答
449 浏览

debugging - 在 WebStorm 中调试黄瓜步骤

我正在尝试Cucumber/WebdriverIO UI使用 Webstorm(NodeJs 平台)进行测试。在某些步骤,我真的很想在调试模式下停止它,检查检索到的元素,看看我能用它做什么。

但不幸的是,调试Webstorm按钮被禁用,我在文档中也找不到任何具体的内容。

如果我可以在不使用 Webstorm 的调试模式的情况下实现我最初的目标(停止一个步骤并试验元素) ,那对我来说完全没问题。

0 投票
2 回答
5743 浏览

javascript - Webdriver.io 因 NoSessionIdError 而崩溃

我正在尝试让 webdriver.io 和 Jasmine 工作。

按照他们的示例,我的脚本位于test/specs/first/test2.js(根据配置)并包含:

我使用 wdio 作为测试运行器,并使用交互式设置进行设置。该配置是自动生成的,而且非常简单,所以我认为不需要发布它。

在另一个终端窗口中,我正在使用 Java 7 运行 selenium-server-andalone-2.47.1.jar。我的计算机上确实安装了 Firefox(运行测试时它会空白启动),并且我的计算机正在运行 OS 10.10。 5.

这是我启动测试运行程序时发生的情况:

我觉得这非常奇怪和莫名其妙,尤其是考虑到它甚至会打印会话 ID。

有任何想法吗?

0 投票
1 回答
2729 浏览

meteor - 使用 Webdriver.io 移动到元素的底部

我有一个页面,其中的元素在您向下滚动时变得可见。我正在尝试执行测试以确保元素不存在,直到滚动到元素的底部,但我似乎无法弄清楚如何将大小从一次调用(elementIdSize())传递到滚动偏移量下一个电话 ( scroll())。诚然,我的大脑还没有通过简单的调用链获得“承诺”的概念。

我试过这样的事情:

我希望使用传入的选择器来获取元素,在 中设置元素then(),然后调用elementIdSize()元素的 ID,但是var element从来没有从element()调用中设置,并且我返回的对象似乎没有无论如何,我想得到什么。我觉得这是我在这里缺少的一些简单的知识,它将使所有这些“点击”。

我在这里使用 API 来查找 Webdriver 调用,但文档没有提供太多细节。

0 投票
3 回答
378 浏览

selenium - 使用 XSLT 模板创建的元素对 Selenium 不可见

问题是,当我尝试为输入设置值时,selenium 返回以下错误: RuntimeError: Element is not current visible and so may not be interacted with

但是,输入是完全可见的。在这个测试中,我使用的是 Firefox,因为它是正确加载应用程序的浏览器。

我无法更改应用程序代码,并且该应用程序有很多遗留代码,但我重新创建了最简单的示例,您可以在其中看到问题。

您知道不修改应用程序代码的任何解决方法吗?

我正在使用 webdriverio:

main.xml 内容:

main.xsl 内容:

helper.xsl 内容: