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模擬器自動運行應用的情況。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM