`
jy503160
  • 浏览: 20401 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

(转)Page-Object使用

 
阅读更多

第一次了解这个框架是在乙醇的框架中。简单几个语句,借用脚本的可看性,直接用语言将页面数据化。感觉这个框架的作者深懂po模式,采用这套框架做元素处理的话,可以将脚本的维护性降低,提高其健壮性!废话少说,直接开始。

下载安装Page-Object

方法一:gem install Page-Object

方法二:直接从githubclone。地址如下:https://github.com/cheezy/page-object

QA:如若提示DevKit尚未安装,请自行去官网下载相关版本的DevKit;下载完后解压至相关文件夹,做三步操作:

> cd <DEVKIT_INSTALL_DIR>

> ruby dk.rb init

#生成config.yml,这里会检查将要添加DevKit支持的Ruby列表,只支持通过RubyInstaller安装的Ruby

#如果这里列出的Ruby与你的要求不符,可以手动修改

> ruby dk.rb review #检查要添加DevKit支持的Ruby列表是否有误,可以略过

> ruby dk.rb install

[INFO] Updating convenience notice gem override for 'C:/Ruby192'

[INFO] Installing 'C:/Ruby192/lib/ruby/site_ruby/devkit.rb'

至于从githubclone,由于本人尚未尝试,如有错误,自行百度谷歌

 

 

 

 

 

简单使用Page-Object

业务流程:打开百度,输入SB,点击百度

① 建立百度页面的class

② 建立测试CASE

③ 执行并生成结果

Baidu_Page.class代码如下:

 

require 'Page-Object'

class Baidu_Page

include PageObject

page_url "www.baidu.com" #定义了该页面的url

text_field "keyword" ,id: "kw" #元素的定位与命名方法1

button(:check,:id=>"su") #元素的定位与命名方法2

End

 

 

该框架的核心就是page-Object模版;

 

Test.class代码如下:

require 'watir-webdriver'

require_relative 'baidu_page' # require默认加载lib下的,如果要加载其他文件夹的可以

#使用require_relative,取文件本身的相对路径

class Test

browser=Watir::Browser.new :firefox

page= Baidu_Page.new(browser,true) #这里是page-object的初始化方法传送一个#browser的对象,若为true且该page类中page_url存在值,则初始化的同时通过browser

#去访问page_url。也可以page= Baidu_Page.new(browser),然后通过下方注释那种去访问#URL。

# page.navigate_to 'www.baidu.com'

page.keyword='sb'

page.check

End

 

Page-Object中对于DOM元素定位与watir-webdriver一样。可以参考上方baidu_page的代码。这里具体讲下page.keywordpage.check的方法:

1. 对于可以setdom元素,你使用=就可以进行set,如page.keyword=sb

2. 对于有text内容的dom元素,你直接调用就是显示其text内容,如:p:p_show,id:”p1” ;Page.p_show就是打印其text内容

3. 对于可以clickdom元素,你直接调用就是click操作,如:page.check

4. 可能有的人要问如果就是要获取这个元素的对象,那么你可以直接page.check_element。这个就是返回elements对象

 

当然还有一些对于AJAXJSFRAME的操作,封装的也不错;可以参考原作者github

 

 

参考链接:https://github.com/cheezy/page-object/wiki

第七城市th7cn
分享到:
评论

相关推荐

    Page-Object设计模式

    ### Page-Object 设计模式详解 #### 一、Page-Object 模式概述 Page-Object 设计模式是一种广泛应用于 Web 自动化测试中的模式,它通过将 Web 页面的元素和操作封装到独立的对象中,使得测试代码更加清晰、可维护。...

    RobotFramework中实现PageObject模式的轻量级关键字库_Python_RobotFramework.zip

    本压缩包"RobotFramework中实现PageObject模式的轻量级关键字库_Python_RobotFramework.zip"包含了使用Python语言和Robot Framework实现PageObject模式的示例库。 首先,我们需要了解PageObject模式的基本概念。...

    项目化python+selenium自动化测试PO模式(page-object)

    在本项目中,我们重点关注的是Page Object(PO)模式,这是一种设计模式,用于组织和管理自动化测试代码,使其更易于维护和扩展。 PO模式的核心思想是将Web页面的UI元素和与其相关的业务逻辑封装成一个独立的类,每...

    page-object-python-selenium:该项目展示了如何通过使用Python和unittest为Selenium应用页面对象模式模型(POM)。 有六个测试用例针对amazon.com的登录页面编写

    [page-object-python-selenium]由以下工具赞助; 请通过查看并注册免费试用来帮助支持我们使用Python的Selenium页面对象模型页面对象模型(POM)是一种模式,您可以将其应用于开发高效的自动化框架。 使用页面模型,...

    nightwatchjs-simply-page-object-example:使用Nightwatch Js使用页面对象模型测试样本

    只是nightwatch.js的页面对象页面对象脚本结构的最佳实践页面对象nightwatch.js运行测试dir $ nightwatch -t [your_testfile.js] 例子$ cd simply-page-object$ nightwatch -t tests/login_test.js Nightwatchjs运行...

    Python+Selenium使用Page Object实现页面自动化测试

    接下来,我们看看如何使用unittest框架来组织Page Object模式的测试用例。unittest是Python内置的一个单元测试框架,它提供了一套完整的测试结构,包括测试用例的组织、断言方法、异常处理等。 在unittest中,我们...

    Selenium使用PageObject模式测试登陆页面

    在我们的例子中,"Selenium使用PageObject模式测试登陆页面",首先我们需要创建一个表示登录页面的PageObject类。这个类可能包含以下内容: 1. **元素定义**:如用户名输入框、密码输入框、登录按钮等,可以使用`...

    WebDriver-Object

    在这种情况下,可以使用自定义的构造函数来传递额外的参数,Page Factory将根据这些参数来初始化Page Object。 #### 总结 Page Factory模式是WebDriver中一个非常有用的功能,它通过减少重复代码,增强了代码的...

    selenium-page-object-generator:灵活灵活的Selenium页面对象模型生成器,可提高敏捷测试过程的速度

    通过从安装软件包,也可以在命令行中使用Selenium Page Object Generator。 该模板使用表达式,这是一种简洁的无逻辑语义模板语言。 这是BETA的早期版本,预计会具有粗糙的边缘和有限的功能。 目前,它支持3个...

    puppeteer-pom-example:使用在puppeteer库上运行的Page-Object-Model进行Web自动化的示例

    Page-Object-Model 是一种软件设计模式,用于改善 Selenium 和其他 Web 自动化框架的代码结构和可维护性。在 POM 模式下,每个网页或页面区域都有一个对应的 Page Object 类,其中包含了与该页面相关的所有操作和...

    python-page-object:python-page-objec

    Python页面对象模型在 上演示了自动化测试工具python 3.6、3.7、3.8、3.9 框架库报告[docker]( )无头自动化连续测试快速开始从shell的根目录中,执行以下步骤: 克隆存储库克隆后使用您的name和email首次配置git ...

    pageobject(selenium基于python)

    在"pageobject"这个压缩包中,可能包含了实现PageObject模式的Python代码示例,你可以通过查看这些文件来进一步了解如何在Python和Selenium中使用PageObject。这些文件可能包括不同页面的PageObject类,以及如何在...

    ember-classy-page-object

    余烬经典页面对象 在周围提供一个超级简单的类包装器。 用法 给定一个简单的ToggleButton组件,只需使用如下模板即可切换其活动状态: &lt;...import PageObject , { clickable } from 'ember-clas

    PyPI 官网下载 | page_object-0.3.4.tar.gz

    标题中的"PyPI 官网下载 | page_object-0.3.4.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`page_object`,版本为0.3.4,且文件格式为tar.gz。PyPI是Python社区官方的第三方软件包仓库,...

    ember-page-object-asserts:QUnit断言https

    用户友好的消息和更简单的语法: const page = create ( { link : { scope : 'a' , href : attribute ( 'href' ) , isHighlighted : hasClass ( 'highlighted' ) , } ,} ) ;assert . po ( page . element ) . text ...

    PageObject.rar

    - **Web元素**:在PageObject类中,定义Web元素作为私有属性,并使用@FindBy、@FindByList等注解进行元素定位。 - **业务逻辑方法**:PageObject类中提供的一系列方法,用于执行特定的页面操作。 在实际应用中,...

    Page-Object-Model:最后倒数,倒计时

    在"Page-Object-Model-main"这个项目中,可能会包含以下内容: 1. `page_objects`模块:包含了所有页面对象类,如`CountdownPage`。 2. `test_cases`模块:包含了各种测试用例,使用页面对象进行测试。 3. `utils`...

    stepik-page-object:最后阶段

    步骤页面对象 最终测试项目(Selenium + Python) Добрыйдень。...“ test_product_page.py” ----'pytest -s -v --tb = line --language = zh-m -need_review test_product_page.py' 4通过,7被取消选择

    python+selenium+UI自动化+pageObject+pytest学习demo

    适合初级的测试开发 想要了解如何使用selenium和python编写ui自动化 并使用了Pageobject模式,和python测试框架 pytest 其中pageObject+pytest学习是用chatgpt4.0生成的。

    cypress-with-page-objects:有关在Cypress中使用PageObject模式的演示示例

    **Cypress与PageObject模式** 在自动化测试领域,Cypress是一个快速、强大的端到端测试框架,它以其直观的API和即时反馈而受到开发者们的喜爱。PageObject模式是一种设计模式,用于组织和抽象UI交互,使得测试代码...

Global site tag (gtag.js) - Google Analytics