问题标签 [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.
javascript - 如何使用 webdriverio 验证其是否为登录页面
我正在使用 Javascript、webdriverio (v2.1.2) 从内部站点执行一些数据提取。内部站点启用了 SSO,因此如果我已在另一个应用程序上进行了身份验证,则无需登录此应用程序(在企业 Intranet 应用程序中很常见)。我计划实现以下目标,
- 创建具有所需功能的客户端
- 传递所需的 URL
- 为了好玩:打印页面的标题
检查页面上是否存在元素。如果是,那么它是一个登录页面。如果不是,那么它不是登录页面
};
这是最好的方法吗?我试图将用于验证登录页面的代码分离到一个单独的函数中,但它不起作用,因为 webdriver 中的所有内容都是作为回调的一部分发生的,我不确定我是否以正确的方式进行操作。 我如何从回调中返回,这又将是该函数返回的最终值?
javascript - Javascript 循环遍历元素并使用 WebdriverIO 单击链接
我正在使用 Javascript、webdriverio (v2.1.2) 从内部站点执行一些数据提取。所以这个想法是
- 认证
- 验证后打开所需的 URL
- 在新页面中,搜索具有特定关键字的锚标记
- 找到后,单击锚标记
以下是我尝试过的并且有效(最后两点)。我不得不使用 Q 和 async 来实现它。我希望只使用 Q 来实现它。有人可以帮助我,如何仅使用 Q 来实现它吗?
相关 Github 问题链接https://github.com/webdriverio/webdriverio/issues/123
linux - WebDriverJS with PhantomJS works on OSX, but not on Linux
I'm using a combination of:
- Selenium Standalone - https://github.com/vvo/selenium-standalone
- WebDriverJS - https://github.com/webdriverio/webdriverio
- Medium's PhantomJS NPM wrapper - https://github.com/Medium/phantomjs
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.
javascript - 如何使用 selenium 更改 phantomjs 的日志文件路径?
将 phantomjs 与 selenium 一起使用时,我想更改默认的 --webdriver-logfile 参数,即 selenium 传递给 phantomjs。我该怎么做?
selenium 日志中的相应行:
在咖啡脚本中启动 phantomjs:
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
, getElementSize
and execute('return jQuery')
succeed; execute('return app')
失败。
(**)我已经按照Selenium WebDriver JS - Explicit Wait中的说明进行操作,但错误是Object #<WebdriverIO> has no method 'wait'
(这很有意义......)
webdriver - 带有 webdriverio 的 Chromedriver - 初始化时未处理的请求
我正在尝试运行 ChromeDriver 并使用黄瓜设置对其进行测试,这是一个非常基本的谷歌搜索测试,但是当我运行测试时它会返回:
我正在运行 chromedriver:
从 cucumber 运行的 world.js 文件是:
我已经用 selenium jar 而不是 chromedriver 进行了测试,这很有效,但最终需要主要针对 CEF 客户端进行测试,我们需要让 chromedriver 正常工作。
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):
詹金斯工作:
selenium - Selenium 以未捕获的错误随机结束
我正在使用 mocha、webdriverio、phantomjs 试图找出 Selenium 在随机情况下失败的原因(50% 没问题,50% 在使用相同代码的不同测试中中断)。
错误是
事实上,驱动程序信息是 EventFiringWebDriver,有时它不会显示。
通过互联网查看,找不到任何解决方案。测试是异步的,但如示例中的 1 对 1,总数量约为 200,超时设置非常大,这不是问题。
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
javascript - JavaScript - WebDriverIO - 如何选择具有相对文件路径的文件进行上传?
我正在为我当前的项目使用CucumberJS
. 该测试将使用Selenium Server + WebDriverIO
. 现在我坚持测试,我必须选择一个图像文件上传到服务器。我正在使用这个 WebDriverIO 的功能:
事情是这样的,因为我希望测试可以在每台计算机上运行,所以我预先上传了一些测试图像文件到服务器的root
文件夹。因为不知道这个root
文件夹会放在其他电脑的什么位置,所以我想一定有办法给chooseFile
函数提交相对文件路径。我尝试过这种方式,但没有用(这是我在下面提到的文件中的代码uploadImg.coffee
)
这是我的项目文件夹结构(我正在使用MeteorJS
):