visit
访问远程URL。
caution
最佳实践
我们建议在使用cy.visit()
时设置baseUrl
。
阅读相关 最佳实践 了解详情。
语法
cy.visit(url)
cy.visit(url, options)
cy.visit(options)
用法
正确用法
cy.visit('/') // 访问baseUrl
cy.visit('index.html') // 如果baseUrl为null,则访问本地文件"index.html"
cy.visit('http://localhost:3000') // 如果baseUrl为null或域名与baseUrl不同,需指定完整URL
cy.visit({
url: '/pages/hello.html',
method: 'GET',
})
参数
url (String)
要访问的URL。
如果设置了全局配置中的baseUrl
,Cypress会在URL前添加该baseUrl
。
如果未设置baseUrl
,则需要指定完整的URL,否则Cypress会尝试充当您的Web服务器。详情请参阅前缀说明。
注意: 访问新域名需要重新加载Cypress窗口。在不使用cy.origin()
的情况下,无法在单个测试中访问不同的超级域名。
options (Object)
传入一个选项对象以控制cy.visit()
的行为。
默认情况下,cy.visit()
命令将使用全局配置中的pageLoadTimeout
和baseUrl
。
选项 | 默认值 | 描述 |
---|---|---|
url | null | 要访问的URL。如果配置了baseUrl ,此值将附加到baseUrl 后。行为与url 参数相同。 |
method | GET | 访问时使用的HTTP方法。可以是GET 或POST 。 |
body | null | 与POST 请求一起发送的可选正文。如果是字符串,将原样传递。如果是对象,将被URL编码为字符串并以Content-Type: application/x-www-urlencoded 标头发送。 |
headers | {} | 将HTTP标头名称映射到值的对象,随请求一起发送。注意: headers 仅对初始cy.visit() 请求发送,不对后续请求发送。 |
qs | null | 附加到请求url 的查询参数 |
log | true | 在命令日志中显示命令 |
auth | null | 添加基本认证标头 |
failOnStatusCode | true | 是否对非2xx 和3xx 的响应码失败 |
onBeforeLoad | function | 在页面加载所有资源之前调用。 |
onLoad | function | 在页面触发load 事件后调用。 |
retryOnStatusCodeFailure | false | Cypress是否应自动重试状态码错误。如果设置为true,Cypress将最多重试请求4次。 |
retryOnNetworkFailure | true | Cypress是否应自动重试瞬时网络错误。如果设置为true,Cypress将最多重试请求4次。 |
timeout | pageLoadTimeout | 等待cy.visit() 解析的超时时间。注意:网络请求受底层操作系统限制,即使增加此值仍可能超时。 |
您还可以在Cypress配置中全局设置所有cy.visit()
命令的pageLoadTimeout
和baseUrl
。
生成结果
cy.visit()
在页面加载完成后返回window
对象。- 在
cy.visit()
之后链接依赖于返回的window
的进一步命令是不安全的。
让我们在访问网站后确认window.navigator.language
:
cy.visit('/') // 返回window对象
.its('navigator.language') // 返回window.navigator.language
.should('equal', 'en-US') // 断言期望值
示例
URL
访问运行在http://localhost:8000
上的本地服务器
cy.visit()
在远程页面触发load
事件时解析。
cy.visit('http://localhost:8000')
选项
更改默认超时
覆盖全局配置中的pageLoadTimeout
。
// 等待30秒以触发页面'load'事件
cy.visit('/index.html', { timeout: 30000 })