Appium移動端自動化測試-安卓真機+模拟器啟動
一.環境準備
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模拟器自動運作應用的情況。