第一次了解这个框架是在乙醇的框架中。简单几个语句,借用脚本的可看性,直接用语言将页面数据化。感觉这个框架的作者深懂po模式,采用这套框架做元素处理的话,可以将脚本的维护性降低,提高其健壮性!废话少说,直接开始。
下载安装Page-Object
方法一:gem install Page-Object
方法二:直接从github上clone。地址如下:
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'
至于从github上clone,由于本人尚未尝试,如有错误,自行百度谷歌
简单使用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.keyword与page.check的方法:
1. 对于可以set的dom元素,你使用=就可以进行set,如page.keyword=‘sb’
2. 对于有text内容的dom元素,你直接调用就是显示其text内容,如:div:div_show,id:”div1” ;Page.div_show就是打印其text内容
3. 对于可以click的dom元素,你直接调用就是click操作,如:page.check
4. 可能有的人要问如果就是要获取这个元素的对象,那么你可以直接page.check_element。这个就是返回elements对象
当然还有一些对于AJAX、JS、FRAME的操作,封装的也不错;可以参考原作者github
参考链接: