您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Appium框架的知識點(diǎn)有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Appium框架的知識點(diǎn)有哪些”吧!
1、測試對象
Appium是一個開源工具,用于自動化iOS、Android設(shè)備和Windows桌面平臺上的原生、移動Web和混合應(yīng)用。
"原生應(yīng)用"指那些用iOS、Android或者WindowsSDK編寫的應(yīng)用。
"移動web應(yīng)用"是用移動端瀏覽器訪問的應(yīng)用(Appium支持iOS上的Safari、Chrome和Android上的內(nèi)置瀏覽器)。
"混合應(yīng)用"帶有一個"webview"的包裝器——用來和Web內(nèi)容交互的原生控件。
重要的是:Appium是跨平臺的:它允許你用同樣的API對多平臺寫測試,做到在iOS、Android和Windows測試套件之間復(fù)用代碼。
2、支持平臺及語言
● appium是跨平臺的,支持OSX,Windows以及Linux系統(tǒng)。它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試腳本,這樣大大增加了iOS和Android測試套件間代碼的復(fù)用性
● appium支持多語言,采用C/S設(shè)計(jì)模式,只要滿足client能夠發(fā)送http請求給server即可
3、工作原理
APPIUM IOS端工作原理
下面我們通過一張圖來看下IOS端APPIUM全過程工作原理:
APPIUM Android端工作原理
下面我們通過一張圖來看下android端APPIUM全過程工作原理:
解釋:
整個箭頭指向?yàn)橐粋€完成的指令循環(huán)
webdriver script需要自動化測試人員自己編寫對應(yīng)的測試腳本
建議大家去了解下JSON wire protocol、instruments、UiAutomator
4、安裝工具
● 測試語言,如python
● appium客戶端
● appium服務(wù)端
● 移動設(shè)備,若使用虛擬機(jī)則需進(jìn)行安裝
5、環(huán)境搭建
(一)安裝Android SDK
1、Android SDK(Software Development Kit,軟件開發(fā)工具包)提供了 Android API 庫和開發(fā)工具構(gòu)建,測試和調(diào)試應(yīng)用程序,可以看做用于開發(fā)和運(yùn)行Android應(yīng)用的一個軟件
2、提供小工具,比如adb、aapt、uiautomatorview
3、測試設(shè)備使用安卓模擬器,這一步?jīng)Q不能跳過
(二)安裝 appium Server
1、appium官網(wǎng):https://pium.app/downloads/
2、下載appium安裝包(AppiumForWindows.zip,appium.dmg)
3、安裝,并配置appium環(huán)境變量
(三)安裝 python-client
1、先安裝編程語言,比如python語言
2、安裝Appium-Client,python的話可使用pip安裝:pip install Appium-Python-Client
6、應(yīng)用及操作
①調(diào)用appium過程
1、配置手機(jī)設(shè)備參數(shù),告訴server端我想調(diào)起的是哪一臺手機(jī)設(shè)備
2、抓取手機(jī)上應(yīng)用的控件,指定對應(yīng)的控件來進(jìn)行操作
3、對抓取到的控件進(jìn)行操作,比如點(diǎn)擊、填寫參數(shù)等
第一步,配置手機(jī)設(shè)備參數(shù)
Appium 的 Desired Capabilities 基本配置如下:
#Android environment
import unittest
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.2'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['app'] = PATH('../../../apps/selendroid-test-app.apk')
desired_caps['appPackage'] = package
desired_caps['appActivity'] = activity
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
常見參數(shù)解釋:
● deviceName:指定啟動設(shè)備,比如Android Emulator、iPhone Simulator等
● automationName:指定自動化引擎,默認(rèn)appium
● platformName:指定移動平臺,Android或者iOS
● platformVersion:指定平臺的系統(tǒng)版本。例如指定Android系統(tǒng)版本為4.2
● appActivity:待測試app的Activity,注意,原生app的話要在activity前加個"."
● appPackage:待測試app的包名(package)信息
第二步,抓取手機(jī)上應(yīng)用的控件
通過Android SDK內(nèi)置工具uiautomatorviewer.bat來查看手機(jī)應(yīng)用的控件參數(shù)(該工具位于 /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):
模擬手指點(diǎn)擊(最多五個手指),可設(shè)置按住時(shí)間長度(毫秒)
舉例: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點(diǎn)滑動至B點(diǎn),滑動時(shí)間為毫秒
舉例:driver.swipe(100, 100, 100, 400)
用法:driver.swipe(x1,y1,x2,y2,500)
4. keyevent
keyevent(self, keycode, metastate=None):
發(fā)送按鍵碼(安卓僅有),按鍵碼可以上網(wǎng)址中找到
用法:driver.keyevent('4')
5. press_keycode
press_keycode(self, keycode, metastate=None):
發(fā)送按鍵碼(安卓僅有),按鍵碼可以上網(wǎng)址中找到
用法:driver.press_ keycode('4')
6.text
text(self):
返回元素的文本值
用法:element.text
7.click
click(self):
點(diǎn)擊元素
用法:element.click()
8.get_attribute
get_attribute(self, name):
獲取某元素的相關(guān)值
用法:element.get_attribute("name")
9.size
size(self):
獲取元素的大小(高和寬)
用法 driver.element.size
10. page_source
page_source(self):
獲取當(dāng)前頁面的源
用法:driver.page_source
11.quit
quit(self):
退出腳本運(yùn)行并關(guān)閉每個相關(guān)的窗口連接
舉例:driver.quit()
執(zhí)行結(jié)果判斷
在用例執(zhí)行完畢,需要判斷是否通過時(shí),需要和你預(yù)期的結(jié)果進(jìn)行對比,一般可以選擇斷言查找某個標(biāo)志位是否出現(xiàn),或者某個元素的text值是否和預(yù)期相等,還可以截圖后跟參照圖片做對比等等。
到此,相信大家對“Appium框架的知識點(diǎn)有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。