javascript - Intern 真的可以在任何 Selenium 服务上运行吗?

标签 javascript testing automated-tests intern

我已经为 the Intern 编写了一些功能测试,它应该可以在 SauceLabs、BrowserStack、TestingBot、我自己的 Selenium 网格上工作。

虽然相同的代码似乎并不适用于所有服务。我最初在 SauceLabs 上进行了功能测试,所以可以说我将该服务用作我的“基础”。

在 BrowserStack 上,测试似乎失败了,因为命令执行得太快了。例如,我使用的是.pressKeys('TEST\nIN\nPROGRESS\n'),其中\n应该是在页面上执行javascript来翻转之前的文本放入一个标签中(比如这个问题的 SO 标签:[intern] [javascript] [testing])。

该命令应产生以下结果:

[TEST] [IN] [PROGRESS]

而是导致

[TESTIN] [PROGRESS]

导致我的断言失败。将 pressKeys 命令更改为

.pressKeys('TEST\n')
.sleep(500)
.pressKeys('IN\n')
.sleep(500)
.pressKeys('PROGRESS\n')

没有解决问题。测试会不一致地通过/失败,标签有时[TEST] [IN] [PROGRESS]的形式出现,有时以[TESTIN] [PROGRESS]的形式出现]

另一个例子是,当我在链接上 .click() 时,它不会总是等待下一页加载,即使是 .sleep()命令之后。

关于 TestingBot,应用程序完全无法上传文件,我终究无法弄清楚如何启用所需的 file_watcher 服务。他们有一个 file upload example here ,但我不知道如何配置实习生为我执行此操作。

难道实习生不应该为测试处理云提供商的这些差异吗?

在实习生中是否有一些标准化的方法来编写我的测试,以便我可以在不更改测试本身的情况下更改我的云测试提供商?

最佳答案

应该可以针对任何云托管的 Selenium 提供程序运行相同的测试套件并让它们成功执行,但是您必须做一些事情:

  1. 您需要确保已正确配置提供程序,以便它们都运行相同版本的 Selenium。这没有标准;每个提供者使用不同的 key 来决定运行哪个 Selenium 版本。查看每个提供商的文档,了解要使用的正确 key 。

  2. 您需要编写没有竞争条件的测试。您在这里描述的内容听起来像是一个经典的竞争条件,您正在执行一些异步完成的操作,因此只发生在特定时间段内执行操作的环境中。修改此特定测试,使其具有 find timeout然后尝试 find您希望在按下返回键时生成的元素应该是一个很好的解决方案,因为这将允许您在必要时等待,而不会降低测试速度。

不幸的是,即使有这个建议,所有用于 Web 浏览器测试的云托管提供商都是垃圾,并且以一种随机导致测试中断的方式乱七八糟。 BrowserStack 是迄今为止最好的避免这种情况的方法,但即使他们不时做一些事情来破坏在本地托管的 Selenium 安装中运行良好的测试。

对于文件上传,如果 Intern 检测到远程提供者支持它,那么 Intern 将自动上传文件,并且您 type intern-runner 服务器上文件的有效路径在跑。您可以通过查看this.remote.session.capabilities.remoteFiles 来检查服务器是否支持上传。 .必须打开功能检测才能使其工作,如果您尝试将文件上传到与 intern-runner 位于同一台计算机上的 Selenium 服务器,则应运行 Intern 3.0.6 或更新版本。 .

关于javascript - Intern 真的可以在任何 Selenium 服务上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439690/

相关文章:

javascript - Shadowbox 未定义

javascript - 如何调试我的 JavaScript 代码?

typescript - TestCafe 默认类与命名类

selenium - 如何使用 Selenium WebDriver(Java) 和 TestNG 按特定顺序运行测试类?

testing - 将当前 URL 写入 TestCafe 中的控制台

javascript - 将 PHP cURL 请求转换为 node.js

javascript - 如何使用 JavaScript 将所有字体动态减少到 50%?

vue.js - Vue-test-utils 加载依赖 - Vue3

android - 从 Intent 启动 Instrumentation 测试

testing - 如何在 cypress 中创建一个查找 "not contains"单词的函数?