calabash 自动化测试 UIWebview 兼容
2017-08-06 本文已影响49人
Caiflower
Calabash
Calabash 兼容 UIWebView
- 1.首先需要给 webview 绑定个唯一标识符
self.webView.accessibilityLabel = @"webView"; self.webView.accessibilityIdentifier = @"landing page";
- 2.在features目录下的pages 文件夹中新建 webview.rb 文件,并将以下代码 copy 进去
require 'calabash-cucumber/ibase' require File.join(File.dirname(__FILE__), '..', 'support', 'wait_options') #DEMO 换成项目名称即 targetName module DEMO class UIWebView < Calabash::IBase include DEMO::WaitOpts def query_str(criteria=nil) if criteria.nil? || criteria == '' 'UIWebView' else "UIWebView #{criteria}" end end def trait "UIWebView {accessibilityIdentifier LIKE 'landing page}" end def await(wait_opts={}) wait_for(wait_options("UIWebView 'landing page'", wait_opts)) do !query(trait).empty? end wait_for(wait_options('Page HTML to load', wait_opts)) do !query("UIWebView css:'ul'").empty? end end def active_page #page_query = query("* {accessibilityIdentifier LIKE 'landing page'}") page_query = query("* marked:'webView'") if page_query.empty? raise "Could not set active page; could not find 'landing page'" end end def with_active_page(&block) block.call(active_page) end end end
- 3.在具体业务文件功能下查找H5页面元素,
- 查找 id为bespeakCount的 a 标签
When(/^点击预约管理$/) do # 下面这句必不可少,必须webview的with_active_page方法中查找页面元素 page(DEMO::UIWebView).with_active_page do |page| # 查找 id为bespeakCount的 a 标签 a = "UIWebView #{"css:'a#bespeakCount'"}" options = wait_options('预约管理a标签') wait_for(options) do !query(a).empty? end touch(a) end end
- 查找所有的 a 标签,然后再找出对应的标签
When(/^点击分店管理$/) do page(DEMO::UIWebView).with_active_page do |page| #获取所有的 a 标签 a = "UIWebView #{"css:'a'"}" options = wait_options('查找所有的 a 标签') #定义属性保存查询结果 b = "" wait_for(options) do b = query(a) !b.empty? end #输出查询结果,查询结果为数据 puts(b) result = "" for r in b do #遍历数组,找出指定的 a 标签 if r["href"] == "xxx.com" result = r end end #如果标签不为空则点击标签 if !result.empty? touch(result) else fail "找不到对应的标签" end end end
-
- 从上面可以看出,可以通过H5元素的 class 和 id 查找出对应的元素,最方便的是用 id, 使用 class 属性查询的结果一般为数组,需要遍历数组获取对应的标签,也可以是用属性查询,
#通过 type 属性查询按钮 button = "UIWebView #{"css:'button[type=button]'"}" #通过 id 查找 input input = "UIWebView #{"css:'input#timeSt'"}" #给 input 赋值 set_text(input, "2017-05-05") #通过 class 属性查找 div 标签 div = "UIWebView #{"css:'div.mui-control-item'"}" #点击了 input 之后模拟键盘输入 wait_for_keyboard keyboard_enter_text("123456")