appium 移动端自动化测试工具(4)
一 簡介
原生應用和web應用
(1)原生應用是特別為某種操作系統開發的. (2)Web應用本質上是為移動瀏覽器設計的基于Web的應用. (3)混合應用大家都知道是原生應用和Web應用的結合體,採用了原生應用的一部分、Web應用的一部分,所以必須部分在設備上執行、部分在Web上執行。?
?
?
?
?
?
appium架構
?
?
二 appium特點
?
三 工作原理
?
appnium-client選擇python語言編寫appium腳本,并行執行腳本.請求先經過appium-server服務端,通過解析和驅動移動設備虛擬機.?
?
四 安裝
http://appium.io/?
?
?
?
雙擊下一步安裝即可,
?
簡單啟動,設置host和port
?
點擊start開啟,界面如下
?
安裝完成.
?
五 inspector (會話)配置
1 簡介
?
?
?
?
?
?
?
?
?
?
?獲取安卓版本
?
獲取設備信息
?
?獲取包名
adb shell dumpsys activity top | findstr “ACTIVITY”?
?
?
?active名字
?
方法二 獲取包名和active名字
?
?打開需要監聽的軟件,如考研幫,查看日志
?
保存session ,啟用session 就可以進行app自動化測試.
?
六 考研app實戰
?
?
賬號:asdfghjkl0111 密碼:********?
?
工具
1 一臺手機或者安卓模擬器2 uiautomatorviewer3 python?
?
?實戰步驟
?
?
?2 python 準備
1 安裝 appium客戶端
pip install Appium-Python-Client?
?
2 必須保證appnium服務器啟動,檢測是否能正常驅動安卓軟件,執行下面代碼
#導入appium設備驅動器 from appium import webdriver#設置安卓設備配置信息(appium中的inspector參數) 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驅動器 driver = webdriver.Remote('HTTP://127.0.0.1:4723/wd/hub',cap)?
?
3 完整代碼
#導入appium設備驅動器 import timefrom appium import webdriver#導入等待模塊 from selenium.webdriver.support.ui import WebDriverWait#設置安卓設備配置信息(appium中的inspector參數) 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驅動器 driver = webdriver.Remote('HTTP://127.0.0.1:4723/wd/hub',cap)# *** 啟動app耗時比較多,等待時間最好設置大一些 *** #如果存在跳過按鈕,則獲取跳過按鈕 try:# WebDriverWait用于等待按鍵出現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()#獲取設備的尺寸 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):
-
獲取設備的尺寸
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)
?
?顯示等待:
指定一個等待條件,和一個最長等待時間,程序會判斷在等待時間內條件是否滿足,如果滿足則返回,如果不滿足會繼續等待,超過時間就會拋出異常.
if WebDriverWait(driver,time).until(method):?
?
隱式等待當使用了隱式等待執行測試的時候,如果 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間后則拋出找不到元素的異常, 換句話說,當查找元素或元素并沒有立即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是0. browser.implicitly_wait(10)#等待十秒加載不出來就會拋出異常,10秒內加載出來正常返回
?
轉載于:https://www.cnblogs.com/angle6-liu/p/10815183.html
總結
以上是生活随笔為你收集整理的appium 移动端自动化测试工具(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于服务器端保存用户的查询参数
- 下一篇: 3D玫瑰花