appium 移动端自动化测试工具(4)
一 簡介
原生應(yīng)用和web應(yīng)用
(1)原生應(yīng)用是特別為某種操作系統(tǒng)開發(fā)的. (2)Web應(yīng)用本質(zhì)上是為移動瀏覽器設(shè)計的基于Web的應(yīng)用. (3)混合應(yīng)用大家都知道是原生應(yīng)用和Web應(yīng)用的結(jié)合體,採用了原生應(yīng)用的一部分、Web應(yīng)用的一部分,所以必須部分在設(shè)備上執(zhí)行、部分在Web上執(zhí)行。?
?
?
?
?
?
appium架構(gòu)
?
?
二 appium特點
?
三 工作原理
?
appnium-client選擇python語言編寫appium腳本,并行執(zhí)行腳本.請求先經(jīng)過appium-server服務(wù)端,通過解析和驅(qū)動移動設(shè)備虛擬機.?
?
四 安裝
http://appium.io/?
?
?
?
雙擊下一步安裝即可,
?
簡單啟動,設(shè)置host和port
?
點擊start開啟,界面如下
?
安裝完成.
?
五 inspector (會話)配置
1 簡介
?
?
?
?
?
?
?
?
?
?
?獲取安卓版本
?
獲取設(shè)備信息
?
?獲取包名
adb shell dumpsys activity top | findstr “ACTIVITY”?
?
?
?active名字
?
方法二 獲取包名和active名字
?
?打開需要監(jiān)聽的軟件,如考研幫,查看日志
?
保存session ,啟用session 就可以進行app自動化測試.
?
六 考研app實戰(zhàn)
?
?
賬號:asdfghjkl0111 密碼:********?
?
工具
1 一臺手機或者安卓模擬器2 uiautomatorviewer3 python?
?
?實戰(zhàn)步驟
?
?
?2 python 準(zhǔn)備
1 安裝 appium客戶端
pip install Appium-Python-Client?
?
2 必須保證appnium服務(wù)器啟動,檢測是否能正常驅(qū)動安卓軟件,執(zhí)行下面代碼
#導(dǎo)入appium設(shè)備驅(qū)動器 from appium import webdriver#設(shè)置安卓設(shè)備配置信息(appium中的inspector參數(shù)) cap={"platformName": "Android","platformVersion": "5.1.1","deviceName": "127.0.0.1:62025","appPackage": "com.tal.kaoyan","appActivity": "com.tal.kaoyan.ui.login.LoginActivity","noReset": True }#實例化一個web驅(qū)動器 driver = webdriver.Remote('HTTP://127.0.0.1:4723/wd/hub',cap)?
?
3 完整代碼
#導(dǎo)入appium設(shè)備驅(qū)動器 import timefrom appium import webdriver#導(dǎo)入等待模塊 from selenium.webdriver.support.ui import WebDriverWait#設(shè)置安卓設(shè)備配置信息(appium中的inspector參數(shù)) cap={"platformName": "Android","platformVersion": "5.1.1","deviceName": "127.0.0.1:62025","appPackage": "com.tal.kaoyan","appActivity": "com.tal.kaoyan.ui.activity.SplashActivity","noReset": True }#實例化一個web驅(qū)動器 driver = webdriver.Remote('HTTP://127.0.0.1:4723/wd/hub',cap)# *** 啟動app耗時比較多,等待時間最好設(shè)置大一些 *** #如果存在跳過按鈕,則獲取跳過按鈕 try:# WebDriverWait用于等待按鍵出現(xiàn)if WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath("//android.widget.TextView[@resource-id='com.tal.kaoyan:id/tv_skip']")):driver.find_element_by_xpath("//android.widget.TextView[@resource-id='com.tal.kaoyan:id/tv_skip']").click() except:pass#處理登錄過程 try:#如果彈出登錄界面,則登錄if WebDriverWait(driver, 3).until(lambda x: x.find_element_by_xpath("//android.widget.Button[@resource-id='com.tal.kaoyan:id/login_login_btn']")):driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.tal.kaoyan:id/login_email_edittext']").send_keys('asdfghjkl0111')driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.tal.kaoyan:id/login_password_edittext']").send_keys('*********')time.sleep(0.5)driver.find_element_by_xpath("//android.widget.Button[@resource-id='com.tal.kaoyan:id/login_login_btn']").click() except:pass# #點擊咨詢if WebDriverWait(driver,10).until(lambda x: x.find_element_by_xpath("//android.support.v7.widget.RecyclerView[@resource-id='com.tal.kaoyan:id/date_fix']/android.widget.RelativeLayout[3]/android.widget.LinearLayout[1]/android.widget.ImageView[1]")):driver.find_element_by_xpath("//android.support.v7.widget.RecyclerView[@resource-id='com.tal.kaoyan:id/date_fix']/android.widget.RelativeLayout[3]/android.widget.LinearLayout[1]/android.widget.ImageView[1]").click()#獲取設(shè)備的尺寸 def get_size():x=driver.get_window_size()['width']y=driver.get_window_size()['height']return x,yl= get_size() x1=int(l[0]*0.5) y1=int(l[1]*0.75) y2=int(l[1]*0.25)while True:#滑動刷新頁面,點到點滑動方式(x1,y1)--->(x2,y2) driver.swipe(x1,y1,x1,y2)time.sleep(0.5)?
?
知識點講解
if WebDriverWait(driver,time).until(method):
-
獲取設(shè)備的尺寸
def get_size(): x=driver.get_window_size()['width'] y=driver.get_window_size()['height'] return x,y
-
活動頁面
while True: #滑動刷新頁面,點到點滑動方式(x1,y1)--->(x2,y2) driver.swipe(x1,y1,x1,y2) time.sleep(0.5)
?
?顯示等待:
指定一個等待條件,和一個最長等待時間,程序會判斷在等待時間內(nèi)條件是否滿足,如果滿足則返回,如果不滿足會繼續(xù)等待,超過時間就會拋出異常.
if WebDriverWait(driver,time).until(method):?
?
隱式等待當(dāng)使用了隱式等待執(zhí)行測試的時候,如果 WebDriver沒有在 DOM中找到元素,將繼續(xù)等待,超出設(shè)定時間后則拋出找不到元素的異常, 換句話說,當(dāng)查找元素或元素并沒有立即出現(xiàn)的時候,隱式等待將等待一段時間再查找 DOM,默認(rèn)的時間是0. browser.implicitly_wait(10)#等待十秒加載不出來就會拋出異常,10秒內(nèi)加載出來正常返回
?
轉(zhuǎn)載于:https://www.cnblogs.com/angle6-liu/p/10815183.html
總結(jié)
以上是生活随笔為你收集整理的appium 移动端自动化测试工具(4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于服务器端保存用户的查询参数
- 下一篇: 3D玫瑰花