Cypress系列(22)- visit() 命令详解

272 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

 

作用

访问远程 URL

 

语法格式

cy.visit(url)
cy.visit(url, options)
cy.visit(options)

 

参数讲解

url

两种值

  1. 需要直接访问的 URL,可以是一个完整的 URL,比如:www.cnblogs.com/poloyy/
  2. html 文件的相对路径,路径是相对于 Cypress 的安装目录,不需要 file:// 前缀

 

Cypress 关于 url 的最佳实践

  • 建议在使用 cy.visit() 时,在  cypress.json 里设置一个baseUrl
  • baseUrl 相当于一个全局共享的 host,在使用 visit() 和 request() 等命令时自动将 baseUrl 传递进去
  • 优势: 首次启动 Cypress 测试时,添加 baseUrl 还可以节省一些时间

 

不添加 baseUrl 的影响

一旦遇到 cy.visit() ,Cypress 便将主窗口的 URL 切换到访问指定的 URL,首次开始测试时,可能会导致刷新或重新加载

 

添加 baseUrl 的优势

  • 通过设置 baseUrl,可以完全避免重新加载
  • 测试开始后,Cypress 会将主窗口加载到您指定的 baseUrl 中

 

添加 baseUrl

 

baseUrl 未运行

如果在 cypress 打开期间,指定了 baseUrl ,但服务器未运行,则会看到错误

 

如果在 cypress 运行期间几次重试后,服务器未在指定的 baseUrl 上运行,也会显示错误 

 

其他参数 options

参数默认作用
methodGET请求方法,GET或POST
bodynulll 与POST请求一起发送的数据体l 如果是字符串,则将其原封不动地传递l 如果是一个对象,它将被URL编码为字符串,并加上Content-Type:application / x-www-urlencoded
headers{}请求头
qsnullUrl的请求参数
logtrue是否打印日志
authnull添加基本授权标头
failOnStatusCodetrue是否在2xx和3xx以外的响应代码上标识为失败
onBeforeLoadfunction在页面加载所有资源之前调用指定的方法
onLoadfunction页面触发加载事件后调用
retryOnStatusCodeFailurefalse当状态码是错误码时,Cypress是否自动重试,最多重试4次
retryOnNetworkFailuretrue当网络错误时,Cypress是否自动重试,最多重试4次
timeoutpageLoadTimeout最长等待 .visit() 完成的时间

 

正确写法

// 在新的窗口打开 URL
cy.visit('http://localhost:3000')  
cy.visit('./pages/hello.html')

 

具体的栗子

直接访问

 

加上 timeout 参数

 

加上 auth

 

加上 onBeforeLoad

 

加上 onLoad

 

加上 qs

 

加上 method 和 body

 

使用 window 对象