量角器片状

2024-01-25

我维护一个复杂的 Angular (1.5.x) 应用程序,正在使用 Protractor (2.5.x) 对其进行 E2E 测试。我在使用这种方法时遇到了一个问题,主要表现为测试看起来不稳定。在一个拉取请求中运行良好的测试在另一拉取请求中失败。这涉及简单的定位器,例如 by.linkTest(...)。我调试了失败的测试,并且应用程序位于正确的页面上,链接存在且可访问。

还有其他人遇到过这些一致性问题吗?知道原因或解决方法吗?


对更多的端到端测试说不! http://googletesting.blogspot.com/2015/04/just-say-no-to-more-end-to-end-tests.html

也就是说,您可以采取以下几项措施来应对我们共同的无情“脆弱”敌人:

  • 更新到最新量角器 https://github.com/angular/protractor/blob/master/CHANGELOG.md(目前4.0.0)这也带来了最新的selenium and chromedriver with it
  • 关闭角度动画 https://stackoverflow.com/questions/26584451/how-to-disable-animations-in-protractor-for-angular-js-application
  • 使用browser.wait() http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.wait与一组内置或自定义预期条件 http://www.protractortest.org/#/api?view=ProtractorExpectedConditions。这可能是迄今为止解决该问题最可靠的方法。不幸的是,这是特定于用例和问题的,您需要在有问题的地方修改实际测试。例如,如果您需要单击某个元素,请等待它可单击:

    var EC = protractor.ExpectedConditions;
    var elm = $("#myid");
    
    browser.wait(EC.elementToBeClickable(elm), 5000);
    elm.click();
    
  • 最大化浏览器窗口(以避免随机元素不可见或不可点击的错误)。把这个放到onPrepare():

    browser.driver.manage().window().maximize();
    
  • 增加量角器和 Jasmine 超时 http://www.protractortest.org/#/timeouts
  • 减慢量角器速度 https://stackoverflow.com/questions/24960290/can-protractor-be-made-to-run-slowly通过调整控制流 http://www.protractortest.org/#/control-flow(不确定4.0.0是否有效,请测试)
  • 手动调用browser.waitForAngular();在有问题的地方。我不确定为什么这会有所帮助,但我看过一些报告,其中它确实有助于修复不稳定的测试。
  • use the jasmine done()打回来 http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support在你的规格中。例如,这可能有助于不启动it()阻塞直到done被叫进beforeEach()
  • 返回一个承诺onPrepare()功能 https://stackoverflow.com/questions/34482583/force-protractors-onprepare-to-wait-for-async-http-request。这通常有助于确保为测试运行做好准备
  • use protractor-flake package https://www.npmjs.com/package/protractor-flake那会自动重新运行失败的测试。更像是解决问题的快速方法

还有其他针对特定问题的“技巧”,例如在文本框中输入速度缓慢 https://stackoverflow.com/q/38187514/771848,点击通过 JavaScript https://stackoverflow.com/questions/34562061/webdriver-click-vs-javascript-click etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

量角器片状 的相关文章

随机推荐

  • 将接口传递给 ASP.NET MVC 控制器操作方法

    在我的 ASP NET MVC 应用程序中 我有一个界面 充当多个不同视图模型的模板 public interface IMyViewModel Client Client1 get set Client Client2 get set V
  • 移动分配与标准复制和交换不兼容

    测试新的移动语义 我刚刚询问了我在使用移动构造函数时遇到的问题 但正如评论中所表明的那样 问题实际上是当您使用标准的 复制和交换 习惯用法时 移动赋值 运算符和 标准赋值 运算符发生冲突 这是我正在使用的类 include
  • 如何在 IONIC 3 中使用路由

    我正在开发一个 Ionic 3 应用程序 现在我正在使用NavController用于路由和切换页面 Ex this navCtrl push DetailsPage 但我现在需要使用 Angular 路由 我发现类似的question h
  • 使用 Mongoose 更新 MongoDB 中的许多记录的正确方法是什么

    我使用 Mongoose 从 MongoDB 中提取一些记录 将它们导入到另一个系统中 然后我想将所有这些文档的状态 文档属性 设置为processed 我可以找到这个解决方案 通过id集更新多个文档 猫鼬 https stackoverf
  • 将多个文件/文件夹从 Windows 资源管理器传递到外部应用程序

    您好 有谁知道如何让 Windows 资源管理器将多个文件 文件夹传递到注册表中引用的外部应用程序 c 我当前能够使用 1 语法对单个文件 文件夹进行操作 但不确定如何让资源管理器传递多个项目 有谁知道如何做到这一点 当您在资源管理器中选择
  • 从 ISO8601 日期时间字符串中提取时区

    如何从 Java 8 中的 ISO 8601 日期字符串中提取时区 e g String timestamp1 2014 02 15T01 02 03Z String timestamp2 2017 10 27T16 22 27 605 0
  • 如何让 git-pull 默认变得详细?

    浏览 git config 变量和 git pull 文档 我没有看到默认情况下使 git pull pull 详细的方法 有人知道有办法吗 并不是所有的东西都有一个配置参数 但你基本上可以使用别名自己处理它 alias pv pull v
  • PHP 是否阻止了粘性位?

    我尝试使用 PHP 的 chmod 将权限设置为 02775 但由于某种原因 它只将 0775 添加到文件中 我认为这可能是 PHP 的 chmod 实现或其他问题 所以我尝试使用 PHP 的 passthru 函数运行 chmod 027
  • Google 登录:拒绝为目标域生成登录提示的权限(javascript Web 应用程序)

    我正在使用 Google 登录 Javascript API 即gapi signin button 在网络应用程序上 该应用程序由 gulp 服务器提供服务 绑定到0 0 0 0 当我在本地开发时 登录过程有效 但是当我在远程服务器上运行
  • FileReader API:如何同步读取文件

    我正在尝试读取使用 html 页面上的输入类型文件选择的文件 我已经实现了读取文件的功能 并且可以读取文件内容 但实际问题是正在读取文件内容异步地它允许执行脚本的其他功能 我将读取的文件内容存储在数组中 当移动到其他函数时 数组是空的 当引
  • 使用 jQuery 对列表项进行分组

    我有一个这样的列表 ul li span class date 2011 05 01 span p Text p li li span class date 2011 05 01 span p Text p li li span class
  • 在同一个图中显示多个可用对象?

    我想在同一个 MATLAB 图中显示多个表格 就像 subplot 可用于显示多个图形一样 然而 似乎 subplot 不适用于 uitable 对象 正如您所看到的 我得到的是五组空轴 而不是分布在图中的五个表 并且只有一个表可见 有没有
  • Python 中的嵌套 try/ except

    try commands try commands try commands try commands except commands return to final commands except commands return to f
  • 如何在没有 MediaExtractor 的情况下使用 MediaCodec 进行 H264

    我需要在没有 MediaExtractor 的情况下使用 MediaCodec 并且我正在使用 FileInputStream 读取文件 目前它不起作用 它在屏幕上显示绿色的乱码图像 这是整个源代码 FileInputStream in n
  • 为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象?

    由于某种原因 jQuery 1 6 2 无法将鼠标悬停处理程序附加到 Flash 对象 有趣的是 getElementById onmouseover 按预期工作 fail content banner mouseover function
  • 如何在 C# 中检测工作的互联网连接?

    我有一个 C 代码 基本上通过 FTP 协议上传文件 使用FtpWebRequest 然而 我想在尝试上传文件之前首先确定是否存在有效的互联网连接 因为 如果没有 则尝试没有意义 软件应该休眠一段时间并再次检查 有没有一种简单的方法可以做到
  • lapply 并应用于列表 R 的每个组件和元素

    我有这个清单 lst lst lt list a c 2 5 9 8 5 0 6 7 6 5 5 2 34 4 4 2 39 5 1 3 0 0 0 0 4 1 0 0 0 0 25 5 196 5 0 0 104 2 0 0 0 0 0
  • 在 Excel 宏中设置图表坐标、标题和添加文本的代码格式建议

    编写了一个宏 用 Excel 绘制带有标记的线 它在单个宏 xlsm 文件中运行良好 但是当我尝试将其转换为 Excel 插件 xlam 文件 时 它出现了很多错误 所有错误都与 X 和 Y 坐标的格式 图表标题的位置 字体类型和大小以及添
  • 可以在引导之前使用自定义 Angular 服务吗?

    我有一个服务 angular module USC service TemplateService function 我想在手动引导我的 Angular 项目之前使用它 angular bootstrap document USC 这可能吗
  • 量角器片状

    我维护一个复杂的 Angular 1 5 x 应用程序 正在使用 Protractor 2 5 x 对其进行 E2E 测试 我在使用这种方法时遇到了一个问题 主要表现为测试看起来不稳定 在一个拉取请求中运行良好的测试在另一拉取请求中失败 这