问题标签 [codeceptjs]

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 回答
639 浏览

javascript - 在自定义助手中处理断言

我已经开始使用 CodeceptJs 并且我已经很容易地让它工作了。我目前正在将它与 NightmareJs 一起使用,一切似乎都很好。

我正在测试的特定区域是一个画廊,它通过 JSONP 从接口获取数据,创建一个包含在<div>s 中的图像列表。

我正在实施的部分测试如下:

现在由于元素可以是任意数字,它目前默默地使用第一个元素,但为了给它更多的熵,我想随机选择一个元素,如下所示

或者更好的是,如果我可以获取元素列表,以便我可以决定点击哪一个,例如:

当前可用的助手不允许我执行某些特定操作,因此我开始按照http://codecept.io/helpers/指南中的说明实现自定义处理程序

在我的配置中,我有以下内容:

目前domelements_helper.js看起来如下:

这不 - 显然 - 工作。这是我有点困惑的地方。

首先,我使用的是默认的 Node.js 断言库,如果有任何需要,我很乐意转向更强大的东西,比如 Protractor 或 Chai-as-promised,但越苗条越好。

其次,文件清楚地说明了以下内容:

任何辅助方法都应该返回一个值,以便添加到 Promise 链中

这真的没有意义......我应该返回一个承诺还是应该在then()声明中处理整个事情?因为返回一个基本值并没有多大作用。即使这样,我如何处理失败的断言?

我还在代码库中看到了 Nightmare 客户端脚本,但我不知道它是否对我的情况有用,因为我刚刚开始深入研究代码库,以便更好地了解如何自定义和扩展CodeceptJs。

任何指针都非常感谢

0 投票
1 回答
475 浏览

javascript - 带有 Nightmare 的 Codeceptjs 不输出测试结果

基本上,我按照http://codecept.io/页面get started部分的描述做了所有事情。

来自 package.json 的 devDependencies:

codecept.json:

测试本身也来自教程:

当我运行时,codeceptjs run --steps我在控制台中得到一个输出: 截图

测试应该通过还是失败并不重要,输出总是相同的。

有谁知道我做错了什么以及如何解决它?

0 投票
3 回答
1721 浏览

javascript - 使用 CodeceptJS/WebdriverIO 并行执行浏览器

我在内部使用 WebDriverIO 的 javascript 中使用 Codeceptjs 进行自动化测试。使用上述框架,我已经实现了在 Sauce 上运行。

我已经完成了在酱实验室的不同浏览器中运行自动化测试用例,方法是使用所需的功能,但一次只能使用一个浏览器

请求帮助

  1. 并行化所有测试文件在酱实验室的单个浏览器上运行。
  2. 在酱实验室的多个浏览器上并行测试运行。

拥有上述两种组合会很棒。

我应该提供什么配置才能在 WebDriverIO / CodeceptJS 上实现上述两个要求。

这是我将传递给酱汁实验室的配置。

---codecept.conf.js---

这些是我正在使用的所需功能列表,并根据所选浏览器名称选择一项功能:

0 投票
2 回答
1051 浏览

codeceptjs - 登录后如何检查网址更改

如何在登录后检查 URL 是否更改以知道登录成功....

天呐!

0 投票
1 回答
865 浏览

node.js - CodeceptJS 在 Ubuntu 上的安装问题

我正在设置一个新系统来使用 CodeceptJS 并遇到了问题。我遵循了这些说明,但在尝试运行 codeceptjs 时却出现错误。错误是...

我的 node.js 和 npm 通过普通的 apt-get 和 npm -g 全局安装

系统信息...

  • Ubuntu 17.04 x86_64
  • 节点:4.7.2
  • npm:4.5.0
  • 重击 4.4.5

有谁知道这个问题的原因或如何解决它?


作为更新,感谢 artem 的注释,'use strict';我将其添加到 node_modules/codeceptjs/lib/mocha_factory.js 的顶部,我认为这让我克服了最初的问题。但是,我现在似乎遇到了 node_modules/codeceptjs/lib/output.js 中的问题。错误是...

...我尝试了一些方法来解决这个问题,在那里调整了打印功能,但还没有运气。

这似乎与 codeceptjs-nightmare 和 codeceptjs-webdriverio 元包相同。

对于任何人的任何想法、建议或替代方案,我将不胜感激。

0 投票
1 回答
1963 浏览

javascript - 使用 CodeceptJS 时如何打开新选项卡或窗口

我正在尝试使用 CodeceptJS(使用 WebdriverIO 助手)创建一个测试,其中我首先登录站点 A,然后打开一个新窗口(或选项卡)并登录站点 B。通过执行第二个“I.amOnPage()它只是重复使用相同的浏览器窗口,但我想打开一个单独的窗口/选项卡并保持站点 A 处于活动状态。这可能吗?

更新:我设法通过 I.executeScript("window.open();") 打开了一个新选项卡,但是我无法通过 WebDriverIO 帮助程序的 switchTab() 方法将焦点切换到新选项卡,因为以下我.amOnPage() 指向上一个选项卡,而不是新打开的选项卡。

0 投票
1 回答
326 浏览

javascript - 在验收测试之前运行一次设置

我有以下使用 CodeceptJS 编写的验收测试套件,它工作正常。我使用Before在每个步骤之前登录。问题是该Before功能相当于 Mocha 的beforeEach,而不是 Mocha 的before,我真正想要的是让一些代码只运行一次,因为这个登录步骤需要一些时间才能完成。

我希望最终得到一个运行一次并从 javascript 获取 loginToken 的函数,然后我可以在接下来的Before每个测试之前使用一个函数来设置它。关于如何做到这一点的任何线索?

PS我确实意识到我可能可以使用一些外部状态来解决这个问题,以检查该函数是否之前运行过,但还没有能够做到这一点。支持最不老套的答案:)

0 投票
1 回答
1143 浏览

syntax - Codeceptjs 选择器:如何选择“电子邮件”输入字段?

我真的需要语法方面的帮助。

我有输入字段:

根据文档:http ://devdocs.io/codeceptjs/helpers/seleniumwebdriver/index#fillfield

应该按名称定位元素。但测试失败并显示错误消息:“字段电子邮件未按名称|文本|CSS|XPath”

是语法错误还是 webdriver 有问题?例如,上一个命令/步骤是:

它正在工作,所以我认为 webdriver 应该没问题。

0 投票
1 回答
346 浏览

codeception - CodeceptJS Multiremote 不能与 WebdriverIO 助手一起使用

我正在尝试使用 WebdriverIO 帮助程序为基于 websocket 的聊天应用程序和 Codeceptjs 的 Multiremote 功能自动化测试用例,这引起了我的注意。但是,我正在努力让它发挥作用。

我想正确设置我的 codecept.js 配置文件和测试文件,以便在一个浏览器和另一个浏览器之间来回切换和操作。 { "output": "./output", "helpers": { "WebDriverIO": { "url": "localhost", "browser":"chrome", "multiremote": { "MyChrome1": { "desiredCapabilities": { "browserName": "chrome" } }, "MyChrome2": { "desiredCapabilities": { "browserName": "chrome" } } }, "restart": false, "windowSize": "maximize", "timeouts": { "script": 60000, "page load": 10000, "implicit": 5000 } } }, "include": { "I": "./steps/ICustom_steps.js", "loginPage": "./page_objects/login_page/login_page.js", "chatPage": "./page_objects/chat_page/chat_page.js" }, "mocha": {}, "bootstrap": false, "teardown": null, "hooks": [], "tests": "./test_cases/*_test.js", "timeout": 10000, "name": "chat app test" }

我可以看到弹出了 2 个浏览器,但是如何正确设置测试文件以在一个浏览器和另一个浏览器之间来回切换交互。

0 投票
2 回答
2448 浏览

node.js - 如何使用 Codeceptjs 将图像添加到 mochawesome 报告中?

我正在自己进行 E2E 测试,我发现了非常有用的节点库,例如 CodeceptJS、WebdriverIO 和 mocha (mochawesome)。

Mochawesome 允许在报告中添加图像,但其文档中使用 addContext https://www.npmjs.com/package/mochawesome解释的方式不适用于 CodeceptJS。

我没有找到关于 CodeceptJS 中使用的这个功能的任何参考资料,我只找到了一个 git 请求https://github.com/Codeception/CodeceptJS/issues/379

有没有办法将图像添加到 mocha 使用 CodeceptJS 生成的 mochawesome 报告?

我的 file_test.js 有一个之前、一个之后和一个场景。我所做的是const addContext = require('mochawesome/addContext');

而不是添加'addContext(this,imagePath)'函数但我得到错误

[mochawesome] 添加上下文时出错:测试对象无效。