解决 Cypress 在 Safari 中无法找到元素的问题

前言

Cypress 是一个非常好用的前端自动化测试框架,支持多种常见浏览器,如 Chrome、Firefox 等等。但是在使用 Cypress 进行 Safari 浏览器的自动化测试时,可能会遇到无法找到元素的问题,本文将分享如何解决这一问题。

问题描述

假设我们有一个简单的测试用例,需要在一个输入框中输入一些文字,然后点击按钮:

在 Chrome 浏览器中,这个测试用例可以正常工作,但是在 Safari 浏览器中,Cypress 无法找到输入框和按钮,报错信息如下:

此时我们需要寻找解决问题的方法。

步骤

步骤一:确认 Safari 浏览器版本

首先,需要确认 Safari 浏览器的版本,Cypress 官方提供了 Safari 支持版本列表,确认浏览器版本是否在支持范围内。

步骤二:升级 Cypress 版本

Cypress 最新版本可能会解决一些已知问题,建议先升级到最新版本,可以通过下面的命令进行升级:

步骤三:将 Safari 浏览器切换到“开发者”模式

在 Safari 浏览器中,选择“偏好设置 - 高级”,勾选“在菜单栏中显示开发者菜单”,然后在菜单栏中选择“开发者 - 允许远程自动化”。

步骤四:配置 Cypress

修改项目中的 cypress.json 配置文件,添加 Safari 相关配置:

以上是一个示例配置,在 Safari 相关配置中,特别需要注意的是 "webkitWebSecurity":false,这是因为 Safari 要求必须使用 HTTPS 协议才能进行自动化测试,但是在本地开发环境下使用的是 HTTP,因此需要关闭同源限制。

步骤五:执行测试用例

重新执行测试用例,看看是否能够正常运行。

总结

Cypress 在 Safari 中无法找到元素的问题,可能是因为 Safari 浏览器版本不支持、Cypress 版本过低或者 Safari 浏览器没有开启“开发者”模式。如果以上方案都没有解决问题,可以尝试使用其他浏览器进行测试。正确地解决这个问题,可以有效提高自动化测试效率和测试用例的稳定性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654571377d4982a6ebf20b97


纠错
反馈