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.在具體業(yè)務文件功能下查找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 標簽') #定義屬性保存查詢結(jié)果 b = "" wait_for(options) do b = query(a) !b.empty? end #輸出查詢結(jié)果,查詢結(jié)果為數(shù)據(jù) puts(b) result = "" for r in b do #遍歷數(shù)組,找出指定的 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 屬性查詢的結(jié)果一般為數(shù)組,需要遍歷數(shù)組獲取對應的標簽,也可以是用屬性查詢,
#通過 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")