Appium 自動化測試(3)--Appium架構與流程介紹

來源:互聯網
上載者:User

標籤:button   來電   ice   ash   接收   介面   開啟   用法   drive   

Appium介紹

Appium是一個移動端的自動化架構,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平台的。可用於IOS和Android以及firefox的作業系統。原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似於ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用於網頁內容互動性的應用。
重要的是Appium是跨平台的,何為跨平台,意思就是可以針對不同的平台用一套api來編寫測試案例。

,appium主要分為三個點:client端,server端,及測試行動裝置 
● client端:用各類語言寫的測試指令碼 
● server端:我們安裝appium工具的那部分,專門用來監聽並接收來自client端的請求,轉寄請求並控制行動裝置執行測試,預設開啟並監聽4723介面 
● 行動裝置:支援三類裝置,我們的最終目的:在裝置上自動執行指定的操作 
整個過程: 
第一,在某台伺服器上安裝appium工具(server端),開啟進程(預設4723介面)進行監聽; 
第二,編寫測試指令碼,放置到伺服器上,執行該測試指令碼(相當於發送命令給server端) 
第三,行動裝置接收到server端發送過來的命令,執行指定的操作

Appium應用及操作

(一)調用appium過程
1、配置手機裝置參數,告訴server端我想調起的是哪一台手機裝置 
2、抓取手機上應用的控制項,指定對應的控制項來進行操作 
3、對抓取到的控制項進行操作,比如點擊、填寫參數等
(二)第一步,配置手機裝置參數
Appium 的 Desired Capabilities 基本配置如下:

from appium import webdriverdesired_caps = {    ‘platformName‘: ‘Android‘,    ‘deviceName‘: ‘611AKBPP22HR5‘,  # adb devices查到的裝置名稱    ‘platformVersion‘: ‘4.4.2‘,    ‘appPackage‘: ‘com.duowan.mobile‘,  # 被測App的包名    ‘appActivity‘: ‘com.yy.mobile.ui.splash.SplashActivity‘,# 啟動時的Activity}driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘,desired_caps)

常見參數解釋:
● deviceName:指定啟動裝置,比如Android Emulator、iPhone Simulator等 
● automationName:指定自動化引擎,預設appium 
● platformName:指定移動平台,Android或者iOS 
● platformVersion:指定平台的系統版本。例如指定Android系統版本為4.2 
● appActivity:待測試app的Activity,注意,原生app的話要在activity前加個“.” 
● appPackage:待測試app的包名(package)資訊
(三)第二步,抓取手機上應用的控制項
通過Android SDK內建工具uiautomatorviewer.bat來查看手機應用的控制項參數(該工具位於 /tools/bin/ 目錄下) 
1、id定位 

使用方法: 
driver.find_element_by_id(‘com.android.contacts:id/three‘)

2、name定位 

使用方法: 
el = self.driver.find_element_by_name(‘未接來電‘) 
el = self.driver.find_elements_by_name(‘未接來電‘)

3、class name 定位 

使用方法: 
els = self.driver.find_element_by_class_name(‘android.widget.ImageButton‘) 
els = self.driver.find_elements_by_class_name(‘android.widget.ImageButton‘)

4、Accessibility ID定位 

使用方法: 
el = self.driver.find_element_by_accessibility_id(‘三‘) 
el = self.driver.find_elements_by_accessibility_id(‘三‘)

5、android uiautomator定位 

使用方法: 
el = self.driver.find_element_by_android_uiautomator(‘new UiSelector().description(星形符號")‘) 
els = self.driver.find_elements_by_android_uiautomator(‘new UiSelector().clickable(false)‘)

(四)第三步,操作控制項

1.scroll
scroll(self, origin_el, destination_el):
從元素origin_el滾動至元素destination_el
舉例:driver.scroll(el1, el2)
用法:driver.scroll(el1,el2)

2.tap
tap(self, positions, duration=None):
類比手指點擊(最多五個手指),可設定按住時間長度(毫秒)
舉例:driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法:driver.tap([(x,y),(x1,y1)],500)

3. swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):
從A點滑動至B點,滑動時間為毫秒
舉例:driver.swipe(100, 100, 100, 400)
用法:driver.swipe(x1,y1,x2,y2,500)

4. keyevent
keyevent(self, keycode, metastate=None):
發送按鍵碼(安卓僅有),按鍵碼可以上網址中找到
用法:driver.keyevent(‘4’)

5. press_keycode
press_keycode(self, keycode, metastate=None):
發送按鍵碼(安卓僅有),按鍵碼可以上網址中找到
用法:driver.press_ keycode(‘4’)

6.text
text(self):
返回元素的文本值
用法:element.text

7.click
click(self):
點擊元素
用法:element.click()

8.get_attribute
get_attribute(self, name):
擷取某元素的相關值
用法:element.get_attribute(“name”)

9.size
size(self):
擷取元素的大小(高和寬)
用法 driver.element.size

10. page_source
page_source(self):
擷取當前頁面的源
用法:driver.page_source

11.quit
quit(self):
退出指令碼運行並關閉每個相關的視窗串連
舉例:driver.quit()

 

Appium 自動化測試(3)--Appium架構與流程介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.