Cypress 是一个现代化的前端测试框架,它能够快速准确地完成各种测试任务。其中,Page Object 模式是 Cypress 中非常重要的一种设计模式,使用 Page Object 模式可以大大简化测试脚本的编写,提高测试脚本的可维护性和可重复性。
什么是 Page Object 模式
Page Object 模式是一种测试自动化设计模式,它将页面中的每个元素封装成一个对象,称之为 Page Object。对于每个页面,都会有一个相对应的 Page Object,Page Object 封装了该页面的所有操作和数据信息。
使用 Page Object 模式有以下好处:
- 将页面元素封装成对象,可以更方便地操作页面。
- 通过方法封装,可以将重复的操作归纳到 Page Object 中,避免出现重复代码。
- 可以更加容易地维护你的代码,通过对 Page Object 的修改,只需修改其方法,而不需要涉及到测试用例中的代码。
- 可以使测试用例更加简洁明了。
在 Cypress 中使用 Page Object 模式
Page Object 模式在 Cypress 中的使用分为三步:
- 创建相应的 Page Object。
- 在测试用例中使用相应的 Page Object。
- 在测试用例中通过调用 Page Object 的方法操作页面元素。
1. 创建相应的 Page Object
例如,我们有一个登录页面,我们可以创建一个 Login Page Object,实现如下:
-- -------------------- ---- -------
-- --------
------ ------- ----- --------- -
------- -
------------------
-
--- ---------- -
------ -------------------
-
--- ---------- -
------ -------------------
-
--- -------------- -
------ -------------------------------
-
--------------- --------- -
----------------------------------
----------------------------------
---------------------------------------
-
-以上代码中,我们创建了一个 LoginPage 类,其中包装了 visit、username、password、submitButton 和 login 方法,分别用来访问该页面、获取用户名、获取密码、获取提交按钮和登录。
2. 在测试用例中使用相应的 Page Object
接下来,我们在测试用例中使用 LoginPage:
-- -------------------- ---- -------
------ --------- ---- ---------
--------------- ------ -- -- -
----- --------- - --- -----------
------------- -- -
-----------------
--
---------- ----- -------------- -- -- -
----------------------------------- -----------
-------------------------- -------------
--
---------- ---- ----- ------- --- ----- ------------- -- -- -
-------------------------------------- ----------------
-------------------------------------
--
--以上代码中,我们首先导入 LoginPage,然后创建了 loginPage 对象,用 beforeEach 钩子在每个测试用例运行前,访问登录页面。在测试用例中使用 loginPage 的 login 方法,然后判断跳转后的 URL 或错误信息是否符合预期。
3. 在测试用例中通过调用 Page Object 的方法操作页面元素
在 LoginPage 类中,我们已经封装了 login 方法,将其封装在 Page Object 中,在测试脚本中只需要使用 login 方法即可登录。同样的方式,我们可以封装更多的方法,达到代码复用和方便维护的目的。
结语
Page Object 模式是 Cypress 中非常重要的一种设计模式,它可以大大简化测试脚本的编写,提高测试脚本的可维护性和可重复性。在使用 Cypress 进行测试时,我们应该尽可能使用 Page Object 模式,以提高我们的测试效率和质量。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67ceed1ee46428fe9e9ae1e1