selenium - 开发人员可以做些什么来协助自动化测试?
问题描述
我工作的公司正在启动一个新的 Web 应用程序,我已经要求前端开发人员使这个应用程序自动化友好。
以前的应用程序使用的是 react 框架,很少有元素具有唯一 ID(或任何唯一标识符)。这一次,我要求开发人员包含一个自定义数据属性,专门用于自动化。
我正在寻找可能在这种情况下有经验的人。
- 您要求您的开发人员做什么来协助自动化?
- 是否有任何标准或指南来命名应用程序中的元素以适应 Selenium 自动化?
- 自定义数据属性是最好的方法吗?还有其他选择吗?
任何建议/指导将不胜感激!
解决方案
如果Web 应用程序没有考虑到测试,那么它们可能很难测试。对于单页应用程序 (SPA)尤其如此。SPA 支持繁重的交互而不会产生额外的页面加载(例如Facebook、Gmail)。这些 SPA 不使用页面加载,而是使用AJAX请求从服务器来回中继数据。
根据来自ThousandEyes的@ChrisChua的说法,这些是在开发 Web 应用程序以简化测试时要牢记的一些最佳实践:
- 添加有意义的类。
- 类应指示元素的功能和状态。
- 在操作元素的 ID 和类中使用功能名称。
- 动态生成的类和 ID 对测试没有帮助。
- 添加可定位的 DOM 反馈以指示应用程序状态。
- 永远不要在测试代码中硬编码内容!
结论
确实,其中一些更改并不容易,因为开发人员可能不得不更加努力地考虑使用对测试友好的设计,而不是“可行的东西”。但是,它肯定会有助于测试的可维护性,从长远来看这将降低成本。
tl; 博士
几个参考:
- Nicolas Gallagher 关于HTML 语义和前端架构的文章
- Yandex 的块元素修改器
- W3C 对好类名的推荐
- Pamela Fox 关于前端架构的文章
推荐阅读
- c++ - 为什么 OpenGL 缓冲区解除绑定顺序很重要?
- windows-10 - 如何找到将网络驱动器映射到我的计算机的程序?
- html - 如何正确缩放 svg?
- reactjs - React:Ref DOM 元素/节点打印的信息与实际的 Ref DOM 不同?
- c++ - 来自函数的 Google 测试 Expect 调用
- swift - iOS | UIKit | 将头像图像大小调整到图像容器时出错
- sql - 如何在 MySQL 中对 concat_ws(',',collect_list(a)) 进行排序?
- wpf - 我可以通过使用样式/资源从我的所有用户控件中删除 xmlns 标签(也许还有资源)吗?
- sql-server - 导出多个 blob 记录并保存到磁盘
- xamarin - 如何将下载的 PDF 文件保存为从 Rest WS 获得的 byte[] 数组