大家好,我是阿萨。昨天讲解了Cypress的那些独特的地方。今天我们来学习下Cypress 的那些坑。
一. 异步
首先看如下代码:
const btn=cy.get('#btn) btn.find('btn2').click()
如果在Cypress中写如上的代码,一定会失败。失败的原因是Cypress是异步的。所以有可能第二句代码先执行,所以导致 btn 是underfined。最终用例失败。
二.async /await 不工作
Cypress 不支持async 和await代码。 虽然Cypress 类似于Promise,但是不同于 Promise, Promise 本身没有重试的概念,但Cypress 却支持命令自动重试。
三. 赋值永远失败
自动化测试经常会把返回值传递给 下一个请求。
describe('Refer', function(){let testVar it('testVar is null',function(){ cy.visit('https://www.baidu.com') cy.contains('textbox').then(($el)=>{ testVar = $el.text() cy.log(testVar) // 这里值不为空 }) cy.log(testVar) // 这里值永远为空 })})
四. 同源策略
同源策略是浏览器安全的基石。 这也意味着 当 2个iframe 直接有访问时,必须同时满足 协议相同,域名相同,端口相同的三个条件。这个限制就会导致如下代码直接报错。
describe('Invalid URL visit', function(){let testVar it('invalid visit',function(){ cy.visit('https://www.baidu.com') cy.visit('https://www.taobao.com') }) })
大家日常写脚本的时候避免以上四个坑,尤其是赋值的坑。简直被坑惨了。