一.環境准備
appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需對應,否則執行腳本可能出錯,我用的是這兩個版本)
macOs版本10.14.1(appium默認不支持該版本,需修改配置文件),參考:https://blog.csdn.net/yxys01/article/details/73551281
xcode版本10.1
下載SDK解壓后,點擊tools文件里的android文件,進行相關安卓版本下載
二.demo代碼
測試文件代碼:
# coding=utf-8 """ author: zhuzhuzhujt datetime: 2019/3/5 4:09 PM project: appuimtest software: PyCharm description: """ import os import unittest from appium import webdriver import time import swipeandroid as sw # from selenium.webdriver.support.ui import WebDriverWait # Appium環境配置 PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p) ) # print PATH class DpAppTests(unittest.TestCase): def setUp(self): desired_caps = { 'automationName': 'Appium', 'platformName': 'Android', 'deviceName': '192.168.0.55:5556', 'platformVersion': '5.1', # apk包名 'appPackage': 'cn.campsg.xuebaketang3.app', # apk的launcherActivity 'appActivity': '.MainActivity', # 鍵盤相關 'unicodeKeyboard': True, 'resetKeyboard': True, # 是否自動啟動 'autoLaunch': True, # 可下載地址,如果測試機無該應用會自動進行下載安裝操作 'app': PATH('xuebayun.apk'), # 如果測試機已有該應用,不再進行下載安裝操作 'noReset': True } self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # WebDriverWait(self.driver, 30, poll_frequency=0.5, ignored_exceptions=None) def tearDown(self): self.driver.quit() def test_dpApp(self): time.sleep(10) # 左滑 sw.swipLeft(500, self.driver) # 左滑 sw.swipLeft(500, self.driver) # 模擬定位點擊"立即體驗" sw.simclick(self.driver, 0.54, 0.89) time.sleep(2) self.driver.find_element_by_android_uiautomator('new UiSelector().text("請輸入學校名稱")').send_keys(u'****') time.sleep(1) self.driver.find_element_by_android_uiautomator('new UiSelector().text("請輸入賬號")').send_keys('***') time.sleep(1) self.driver.find_element_by_android_uiautomator('new UiSelector().text("•••••")').send_keys('***') time.sleep(1) self.driver.find_element_by_android_uiautomator('new UiSelector().description("登錄")').click() time.sleep(4) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(DpAppTests) unittest.TextTestRunner(verbosity=2).run(suite)
調用方法swipeandroid.py:
# coding=utf-8 """ author: zhuzhuzhujt datetime: 2019/3/6 11:56 AM project: appuimtest software: PyCharm description: """ def getSize(dr):
# 獲取屏幕寬高 x = dr.get_window_size()['width'] y = dr.get_window_size()['height'] return x, y def swipeUp(t, dr): l = getSize(dr) x1 = int(l[0] * 0.5) y1 = int(l[1] * 0.75) y2 = int(l[1] * 0.25) dr.swipe(x1, y1, x1, y2, t) def swipeDown(t, dr): l = getSize(dr) x1 = int(l[0] * 0.5) # x坐標 y1 = int(l[1] * 0.25) # 起始y坐標 y2 = int(l[1] * 0.75) # 終點y坐標 dr.swipe(x1, y1, x1, y2, t) # 屏幕向左滑動 def swipLeft(t, dr): l = getSize(dr) x1 = int(l[0]*0.75) y1 = int(l[1]*0.5) x2 = int(l[0]*0.05) dr.swipe(x1, y1, x2, y1, t) # 屏幕向右滑動 def swipRight(t, dr): l = getSize(dr) x1 = int(l[0]*0.05) y1 = int(l[1]*0.5) x2 = int(l[0]*0.75) dr.swipe(x1, y1, x2, y1, t) def simclick(dr, xper, yper): # 模擬坐標點擊 l = getSize(dr) x1 = int(l[0]*xper) y1 = int(l[1]*yper) dr.swipe(x1, y1, x1, y1, 1)
三.真機運行
usb連接,開啟開發者選項中的usb調試功能。控制台輸入:adb devices查看設備列表
或者通過wifi連接,手機和電腦屬於同一網段且能夠ping通,控制台輸入:adb connect 192.168.0.55:5556(默認斷口號5555,可以adb tcpip 5556進行更改),提示連接成功后,控制台輸入:adb devices查看設備
py代碼參數設置如下:
desired_caps = { 'automationName': 'Appium', 'platformName': 'Android', 'deviceName': '192.168.0.55:5556', 'platformVersion': '5.1', # apk包名 'appPackage': 'cn.campsg.xuebaketang3.app', # apk的launcherActivity 'appActivity': '.MainActivity', # 鍵盤相關 'unicodeKeyboard': True, 'resetKeyboard': True, # 是否自動啟動 'autoLaunch': True, # 可下載地址,如果測試機無該應用會自動進行下載安裝操作 'app': PATH('xuebayun.apk'), # 如果測試機已有該應用,不再進行下載安裝操作 'noReset': True }
打開appium,點擊launch打開appium服務后,在pycharm上執行代碼,測試機會自動執行
四.安卓模擬器執行
SDK文件夾,點擊tools文件里的android文件
1.下載android版本,我這里下載的是5.1版本
2.下載完成后,點擊菜單欄如下,選擇Manage AVDs
3.點擊create,創建模擬器,如圖(具體配置可以自行百度)
4.點擊start運行模擬器,此處一開始點擊啟動時,報了個未安裝Intel HAXM的error,此時回到 Android SDK Mannager配置頁,選擇extras下如圖的文件進行安裝
下載成功后,我又試了下start模擬器,仍舊報錯。
此時進入SDK文件夾,多了個extras文件夾,點進去選擇intel,一層層進入,會有個兩個安裝文件,如下圖,我試了第1個未安裝成功,點擊第2個文件提示安裝好后,進入系統安全性與隱私內,把系統阻攔的文件訪問給允許(就因為這個地方導致一直無法訪問intel HAXM)
之后,進入AVM配置頁面,點擊start,模擬器成功啟動(特別慢,需要等很久時間),進入系統后顯示如圖
5.修改代碼參數配置處,修改deviceName,模擬器設備名,可進入控制台輸入:adb devices查看,如下圖
修改代碼:
6.打開appium,點擊launch,啟動appium服務后,運行代碼文件
自動下載apk文件安裝,並自動執行
(注:模擬器過分卡頓,很容易出現應用閃退的情況,之后准備再試一下夜神模擬器上運行的情況)
以上就是Appium自動化測試在真機和模擬器上的運行步驟,下一節,稍微寫一下ios真機及ios模擬器自動運行應用的情況。