问题标签 [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 回答
3234 浏览

javascript - 如何使用 webdriverio 验证其是否为登录页面

我正在使用 Javascript、webdriverio (v2.1.2) 从内部站点执行一些数据提取。内部站点启用了 SSO,因此如果我已在另一个应用程序上进行了身份验证,则无需登录此应用程序(在企业 Intranet 应用程序中很常见)。我计划实现以下目标,

  • 创建具有所需功能的客户端
  • 传递所需的 URL
  • 为了好玩:打印页面的标题
  • 检查页面上是否存在元素。如果是,那么它是一个登录页面。如果不是,那么它不是登录页面

    };

这是最好的方法吗?我试图将用于验证登录页面的代码分离到一个单独的函数中,但它不起作用,因为 webdriver 中的所有内容都是作为回调的一部分发生的,我不确定我是否以正确的方式进行操作。 我如何从回调中返回,这又将是该函数返回的最终值?

0 投票
1 回答
4036 浏览

javascript - Javascript 循环遍历元素并使用 WebdriverIO 单击链接

我正在使用 Javascript、webdriverio (v2.1.2) 从内部站点执行一些数据提取。所以这个想法是

  • 认证
  • 验证后打开所需的 URL
  • 在新页面中,搜索具有特定关键字的锚标记
  • 找到后,单击锚标记

以下是我尝试过的并且有效(最后两点)。我不得不使用 Q 和 async 来实现它。我希望只使用 Q 来实现它。有人可以帮助我,如何仅使用 Q 来实现它吗?

相关 Github 问题链接https://github.com/webdriverio/webdriverio/issues/123

0 投票
1 回答
1921 浏览

linux - WebDriverJS with PhantomJS works on OSX, but not on Linux

I'm using a combination of:

Each component works fine separately, and when I run:

It works fine on OSX/Mac, but on our CI Linux server (Ubuntu), I get the following error message;

Before the ineveitable Java stacktrace...

&

I suspect a permissions issue, but wondered if anyone has run into this problem before. At the very least, it would be great to work out exactly why this is working on Mac.

0 投票
1 回答
1392 浏览

javascript - 如何使用 selenium 更改 phantomjs 的日志文件路径?

将 phantomjs 与 selenium 一起使用时,我想更改默认的 --webdriver-logfile 参数,即 selenium 传递给 phantomjs。我该怎么做?

selenium 日志中的相应行:

在咖啡脚本中启动 phantomjs:

0 投票
0 回答
2268 浏览

node.js - Selenium + webdriverio - 如何检索页面 JS 初始化产生的 var?

在我正在开发的验收测试套件中(在堆栈顶部具有 mocha、sinon 和 chai),我能够在 phantomjs 中加载页面并根据网络上可用的示例执行各种操作。

唯一让我难以理解的是检索页面启动期间产生的 JS 变量。我在这里附上了一个完整的示例,它显示了如何app无法测试变量,而jQuery可以。

两者之间的唯一区别app是由运行产生的$(document).ready(function() {... create var app ...})

我得到的错误是maximum call stack exceeded(?!?!?!?)

如果可用,我该怎么做才能执行应用程序检查?也许使用承诺的东西?我看不清楚这一切(**)。

这是错误堆栈:

这里是测试:getTitle, getTagName, getElementSizeand execute('return jQuery')succeed; execute('return app')失败。

(**)我已经按照Selenium WebDriver JS - Explicit Wait中的说明进行操作,但错误是Object #<WebdriverIO> has no method 'wait'(这很有意义......)

0 投票
1 回答
2567 浏览

webdriver - 带有 webdriverio 的 Chromedriver - 初始化时未处理的请求

我正在尝试运行 ChromeDriver 并使用黄瓜设置对其进行测试,这是一个非常基本的谷歌搜索测试,但是当我运行测试时它会返回:

我正在运行 chromedriver:

从 cucumber 运行的 world.js 文件是:

我已经用 selenium jar 而不是 chromedriver 进行了测试,这很有效,但最终需要主要针对 CEF 客户端进行测试,我们需要让 chromedriver 正常工作。

0 投票
1 回答
1159 浏览

node.js - Jenkins Javascript 路径失败

我正在构建一个通过 Jenkins 运行 Mocha + WebDriverIO 的小型测试框架。出于某种原因,相对路径未按预期显示。结果,fs.js 抛出错误:

错误:

错误:ENOENT,没有这样的文件或目录 'C:\workspaces\nodejstest\jenkins\JENKINS_HOME\jobs\browse_test\workspace\login.js'

路径应该是:'C:\workspaces\nodejstest\login.js'(执行脚本的绝对位置)。任何人都知道为什么目录路径错误,即使我是从同一目录执行脚本,而不是错误状态的 Jenkins 工作区目录。当我从 cli 运行它时,它工作正常。诡异的。

测试脚本(run_test.js):

启动 Jenkins (run.sh):

詹金斯工作:

0 投票
1 回答
922 浏览

selenium - Selenium 以未捕获的错误随机结束

我正在使用 mocha、webdriverio、phantomjs 试图找出 Selenium 在随机情况下失败的原因(50% 没问题,50% 在使用相同代码的不同测试中中断)。

错误是

事实上,驱动程序信息是 EventFiringWebDriver,有时它不会显示。

通过互联网查看,找不到任何解决方案。测试是异步的,但如示例中的 1 对 1,总数量约为 200,超时设置非常大,这不是问题。

0 投票
3 回答
956 浏览

testing - Jasmine 测试在 webdriver.io 下没有通过/失败报告

像这样在 webdriver.io 下运行以下 jasmine 测试:node path/to/test/script.js,测试执行(拉起 Web 浏览器,访问目标页面),并且由于最后一行,jasmine 'it' 函数(如下)执行(没有最后行,他们没有,尽管“描述”功能仍在运行)。

但是 jasmine 没有为“it”测试和“expect”断言提供任何类型的报告结果;茉莉花的控制台上没有任何东西。没有“通过/失败”结果,依此类推。

如何让茉莉花做报告,尤其是。詹金斯可以阅读的一种?

问题测试脚本:

注意:在这里交叉发布:https ://groups.google.com/forum/#!topic/webdriverio/-EOrQ003B9I

0 投票
1 回答
2640 浏览

javascript - JavaScript - WebDriverIO - 如何选择具有相对文件路径的文件进行上传?

我正在为我当前的项目使用CucumberJS. 该测试将使用Selenium Server + WebDriverIO. 现在我坚持测试,我必须选择一个图像文件上传到服务器。我正在使用这个 WebDriverIO 的功能:

事情是这样的,因为我希望测试可以在每台计算机上运行,​​所以我预先上传了一些测试图像文件到服务器的root文件夹。因为不知道这个root文件夹会放在其他电脑的什么位置,所以我想一定有办法给chooseFile函数提交相对文件路径。我尝试过这种方式,但没有用(这是我在下面提到的文件中的代码uploadImg.coffee

这是我的项目文件夹结构(我正在使用MeteorJS):