首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于 Cypress 的启动和 cy.visit 的调试

在这个 spec 执行的时候,cy 为什么就可用了? 单步调试 todo.spec.js,在 webpack:// 文件夹下: 具体的实现位置? 为什么会在这个 url 下面?...https://example.cypress.io/__cypress/runner/cypress_runner.js https://example.cypress.io/todo 这是一个开发好的...web 应用: cy 的方法都是 generic 注入进去的: 记住这个文件名:cypress_runner.js 运行队列: 队列是一个 object: Promise 似乎不是原生的...cy.visit 会立即返回,不会同步的去访问网站: it('let me debug like a fiend', () => { cy.visit('/my/page/path') cy.get...:stop': return this.emit('stop'); 使用 onBeforeLoad 钩子,我们可以在 Web 应用的主页加载之前,注入一些数据给它

48810
您找到你想要的搜索结果了吗?
是的
没有找到

Cypress系列(3)- Cypress 的初次体验

打开浏览器访问:http://localhost:7077/,即可看到登录页面 ?...快速测试登录页面 首先,设计测试用例步骤 访问http://localhost:7077 输入用户名、密码,点击登录 如果用户名和密码正确,则登录成功,否则登录失败 接下来,我们来看看实现测试用例的步骤...调试测试用例 前言 测试用例运行时,难免会发生各种情况导致运行失败;快速定位发生错误的位置,了解错误信息,一直是自动化测试的痛点 Cypress 提供了多种 debug 能力,可以在测试运行错误时直达错误位置...支持查看测试运行时发生的特殊页面事件 包括: 网络 XHR 请求 URL 哈希更改 页面加载 表单提交 例如,上面测试用例中,点击【submit】后产生的就是提交表单的请求,看下图 可以看到一个 submit...操作,分成了三步走 form sub:提交表单 page load:页面加载 new url:访问新的页面 ?

1.2K20

你不知道的Cypress系列(4) -- “PO”已死,App Action当立?

要么注册一个账户,用这个账户登录,充钱,添加商品,然后加购物车,然后付款,最后检查优惠券页面。 注意:我的测试要求是测试付款成功后的优惠券页面。那么这个动作抽象一下就是 1. 付款及其前置动作 2....如果有一种办法,可以让我们的应用程序直接到达优惠券页面,我的代码是不是只需要10行?是不是就避免了很多无效的操作?是不是运行速度上可以更快,而且我可以只关注我要测试的部分?....window() .then(({ app }) => { app.showLoginModule = true; }); 这段代码直接把Login窗口打开了,不是通过页面操作打开...为什么这样可以呢? 这就不得不说到应用程序源码了: ?...:) 05 — 为什么App Action流行不起来? 看到这里,你应该明白使用Cypress的最大好处了吧?你可以直接调用应用程序里的方法来设置你应用程序当前的状态,是不是心潮澎湃啊!

1.1K10

你不知道的Cypress系列(1) --鸡肋的BDD

今天是的第一篇 --鸡肋的BDD。 经常有同学问我,为什么不在自动化测试中使用BDD? ... 进退两难之际,夏侯惇入帐,禀请夜间口号。曹操随口曰:“鸡肋!鸡肋!”...你只要记住,BDD的背后是Gherkin, Gherkin的最佳体现是Cucumber框架,所以当你看到有人的测试用例/脚本是下面这个样子时,它就是BDD了。...它非常简单,当你输入正确的用户名和密码,我就允许你登录。假设我们要测试这个登录功能,那么我们先来看下,该如何测试。...我再次笑了, 除了把我写的描述高亮出来,有什么区别吗??...不会写代码的同学用不好BDD, 不是说自然语言描述吗?为什么我描述的框架都不认 :)。 BDD除了给我们增加点工作量和Debug负担后,没有带来任何测试效率提升。

1.5K20

Cypress系列(68)- request() 命令详解

cy.visit() 更快,然后等待整个页面加载所有资源 通过 .visit() 测试需要登录才能访问的页面 const username = 'jane.lane' const password =...username) cy.get("input[name=password]").type(password) cy.get("form").submit() // 会跳转至需要登录才能访问的页面...通过 .request() 测试需要登录才能访问的页面 it('request代替visit', function () { // 通过接口层面去访问页面 // 请求页面 cy.request...username: 'jane.lane', password: 'password123' } }) // 访问需要登录之后才能访问的页面...官方重点 通常,一旦对登录进行了适当的e2e测试,就没有理由继续使用 cy.visit() 登录并等待整个页面加载所有关联的资源,然后再运行其他命令,这样做可能会减慢我们整个测试套件的速度 轮询发出请求的栗子

97220

Cypress安装与使用教程(3)—— 软测大玩家

主页地址:【Austin_zhai】 目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。...比如我们需要将登录这个业务动作进行抽象,那就先编写一段登录的相关业务代码。 我们写一个十分简单的登录操作,语法如下,可以看到整个的业务代码十分的简单,只需要将用户名和密码进行传参即可。...使用起来是不是很方便,因为其本身就是将业务方法继续抽象,所以直接调用其方法名就可以达到登录代码同样的效果。...这样我们就可以灵活的在页面上选择到任何一个能捕捉到的元素。...在这其中我们只保留的基本的登录操作,不进行过多的细化操作,说人话就是我们只把共通与大框架的部分保留了下来,一些根据业务不同扩展或特定的操作则被丢弃掉了。

19410

Cypress web自动化31-request发post请求登录接口

前言 cypress 不仅可以用浏览器访问web页面,也可以直接发 request 请求访问接口。 在实际工作中,很多时候都需要先登录,如果只是写登录页面的案例,可以直接在web页面操作。...如果是写其他页面的案例,需要依赖登录,这时候应该是不需要再次重复打开页面登录,正确的做法是在用例跑之前写个前置,发登录的请求,保存cookie,让页面保持登录状态。...登录接口 以禅道网站为例,登录的接口没提供接口文档的话,可以自己抓包获取接口请求报文 ?...cypress登录脚本案例 使用request发post请求,如果是页面的 form 表单请求,只需设置 form 为 true,这样就能在头部声明body的请求参数类型 Content-Type: application...自定义登录指令 cypress.json设置baseUrl地址 { "baseUrl": "http://localhost:8080", } 登录的请求完成了,接下来我们会想后面的用例都需要把登录当成前置

1.1K10

前端自动化测试实践05—cypress-e2e入门

前端自动化测试实践05—cypress-e2e入门 TOC Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian...端到端测试更贴近真实用户操作,页面运行在真实的浏览器环境中,因此端到端测试是从用户角度出发的测试。...1.2 工具选择 端到端测试的工具也有不少,最为突出的是老牌 e2e 测试工具 NightWatch,根据需要安装 Selenium或其他Webdriver,优势是可以测试多类浏览器,兼容性好, Cypress...可调式能力: 你再也不需要去猜测测试为什么失败了。 调试工具 和Chrome的调试工具差不多。 清晰的错误原因和堆栈跟踪让调试能够更加快速。 自动等待: 在你的测试中不再需要添加等待或睡眠函数了。...截屏和视频录制 屏幕录制截屏是 Cypress 的一大特色,在 Test Runner 中单击项目的 Runs 选项卡,登录账号,再根据提示执行指令,即可完成屏幕录制和自动截屏。 $ .

4K97

Cypress系列(62)- 改造 PageObject 模式

(单步操作或功能集合) 测试代码和被测页面代码解耦,使用 PO 模式后,当页面发生改变,无须改变测试代码,仅改页面代码 接下来就讲解下 Cypress 下如何使用 PO 模式 前期准备 启动 Cypress...当登录成功后,页面将跳转至 mainPage 页面,上面只写了 login 页面,这里写下跳转后的页面 // login.js export default class mainPage{...总结下 和 mainPage.js 两个页面对象都有一个 isTargetPage() 函数来判断当前页面 URL 是否正确 login.js 那这里就将每个 page 都共用的部分再次剥离,放到一个新的...使用 PO 模式的总结 Cypress 完全支持 PageObject 模式 但存在一个问题,如果一个测试需要访问多个页面对象,就意味着测试中要初始化多个页面对象实例(new Page()) 如果一个页面对象需要登录才能访问...(大部分场景都是这样),则每次初始化都需要先登录再访问(只有登录后才能重用 cookie),这无形增加了测试运行的时间 Cypress 不认为 PO 模式是一个好模式,它认为跨页面共享逻辑是一个反逻辑,

91772

自动化测试框架

Cypress的PO模型 将元素定位器剥离 首先在工程的Cypress路径下新建一个pages目录,然后在该目录下新建一个JS文件,并命名为login.js //login.js export default.../pages/login" describe('登录测试,PageObject模式', function () { const username = 'davie.yang'...mainInstance.isTargetPage() mainInstance.welComeText.should('contain', 'davie.yang') }) }) 进一步更新,将每个页面都公用的部分再次剥离...的PO模式弊端 如果一个测试需要访问多个页面对象,这就意味着测试过程中需要初始化多个页面对象的实例,如果大多数页面对象需要 登陆才能访问,则每次初始化都需要先登录再访问,因为只有登陆后才能重用cookie...,这无疑会增加测试执行的时间 因此在Cypress中并不认为PO是个很好的模式,Cypress认为跨页面共享逻辑是一个反模式(Anti-Pattern),在Cypress中,它提供了很多方式,允许用户通过更简单的方式直接设置被测应用程序达到的待测试状态

42510

你不知道的Cypress系列(2) -- ”该死的PO模型​!

接着访问mainPage(登录后会跳转的页面) 判断mainPage可访问 在mainPage上断言 02 — PO模型的好处 由上文可以看到, PO模型的目的,主要是为了重用元素,做到每个元素定位...不必关心其它团队所own的页面。 如果我对其它组的服务有依赖,这些通常会构建专门的函数并成为Common Page的一部分。...,这些状态是你(测试脚本创建者)自己定义的,不是应用程序内部拥有的, 它增加了debug成本。...// 比如你的方法里存在如下判断: // 如果页面发生AAA, 你会进行BBB操作, 如果发生CCC,你会进行DDD操作。 // 这在Cypress看来是反模式。...这样感觉代码量是不是更少,代码更直观了? 03 — 我怎么看PO和Custom Commands 这里我也谈下我对PO和Custom Commands的看法。

2.2K20

Cypress系列(63)- 使用 Custom Commands

被认为是替代 PageObject 的良好选择 使用 Custom Commands 可以创建自定义命令和替换现有命令 Custom Commands 默认存放在 文件中,它会在任何测试文件被导入之前加载...username) cy.get('input[name=password]').type(`${pwd}{enter}`) }) testlogin.js 测试用例文件的代码 context('登录测试...,PO 模式', function () { const username = 'jane.lane' const pwd = 'password123' it('登录成功'...,而这一切通常无须通过页面操作,这使得使用了自定义命令的测试会更加稳定 自定义命令允许重写 Cypress 内置命令,意味着可以自定义测试框架并立刻全局应用 Custom Commands 完全替换 PageObject...,cypress 会自动保存 session cookie // 所以下面就可以访问登录后才能访问的页面 cy.visit('/dashboard') cy.url

1.9K72

Cypress web自动化29-失败截图以及用例录制mp4视频

截图存储在screenshotsFolder中,默认设置为cypress/screenshots。 在cypress run之前,Cypress将清空任何现有的截图。...02:35 18 9 8 - 1 从上面的结果可以看出哪些用例失败了,比如我想看 login_web.js 这条为什么失败...从上面截图就能快速定位到问题,访问登录页面的时候,定位 #count 元素失败了 videos 视频录制 在运行用例的时候,已经对每个用例录制了对应的视频 /cypress/videos 目录下就能找到以脚本命名的...很容易看出是因为没打开登录首页,因为其他用例登录后有 cookies 了,就直接进入到已登录后的页面了 视频功能 可以通过将video设置为false来关闭录制视频功能。...视频存储在videosFolder中,默认设置为cypress/videos。 当cypress run完成后,Cypress将自动压缩视频以节省文件大小。

1.7K20

Cypress学习笔记5——官方示例

https://registry.npm.taobao.org   再次安装: cnpm install   安装完成后,目录结构:   启动   启动测试应用时,可以进入不同子项目文件夹来启动不同的应用...;   如果我们要测试表单类型的登录,可以打开以下被测应用 cd examples\logging-in__html-web-forms> cnpm start   使用浏览器访问:http://localhost...:7077/ ,如图:   验证登录是否可用   网页是打开了,那么账号密码在哪里呢?   ...我们打开文件server.js,如图:    使用notepad打开:    知道账号和密码,返回浏览器中登录:    证明登录成功!   ...'have.value', 'password123') // 提交表单 cy.get('[type="submit"]').click() // 判断页面跳转到

52020

Cypress web自动化19-自定义命令,把登陆当公共方法commands.js

前言 测试一个web网站的时候,通常需要先登录。要是每个脚本都写一次登录流程,太麻烦了,于是我们会想到写一个公共函数,这样每次去调用函数即可。...cypress 里面提供了一个 commands.js 可以自定义命令,如使用cy.login(user,password)就能调用了 登录 前面写了一个登陆的案例,参考https://www.cnblogs.com...password) .should('have.value', password) // 提交表单 cy.get('#submit').click() // 判断页面跳转到...Cypress.Cookies.preserveOnce(‘key name1’, ‘key name2’) // # 上海-悠悠,QQ交流群:750815713 describe('登录后-访问首页...include', '/zentao/admin/') cy.title().should('contain', '后台管理 - 禅道') }) }) 再次运行就会发现第二个用例不会重复执行登录内容了

1.4K30

Cypress web自动化28-运行器界面调试元素定位和操作

前言 Cypress提供了一个很好的测试运行器, 它为你提供了一套可视化结构的测试和断言套件, 很快你也会看到命令, 页面事件, 网络请求等....调试 Cypress提供了调试工具来帮你理解一个测试,能够做下面事情的能力: 适时的追溯每一个命令的快照. 查看发生的特殊的页面事件. 接收关于每个命令的额外输出. 在多个命令间向前/后移动....此外, 因为 cy.get() 在页面找到了 DOM 元素, Cypress 还突出显示元素并将其滚动到视图中 虽然登录之后,跳转到了一个新的url地址 http://49.235.1.x:8080/zentao...这些都不是我们主动发出的命令 - Cypress 会记录下程序关键事件的发生,请注意它们会看起来不同(它们是灰色的, 并且没有数字). ?...Cypress注销页面事件: 网络XHR请求 URL哈希变化 页面加载 表单提交 控制台输出 除了命令是交互的, 它们也在你的控制台输出额外的调试信息.打开你的Dev Tools并且点击 #submit

1.3K30
领券