最近做個項目需要測試服務(wù)端的并發(fā)性能,客戶端采用安卓,接口數(shù)據(jù)采用Restul和流媒體播放。由于流媒體的接口并不清楚,所以決定采用安卓虛擬機(jī)來模擬。
正好趕上Appium2.0升級,網(wǎng)上的很多資料都不能用了,這里將整個環(huán)境搭建的要點(diǎn)記錄下來與大家分享。
#1. Appium2.0的安裝
- node.js 下載安裝npm
https://nodejs.org/zh-cn/ - npm配置國內(nèi)源
查看當(dāng)前源
npm config get registry
設(shè)置為淘寶源
npm config set registry https://registry.npm.taobao.org
- 安裝appium 2.0 Server和安卓驅(qū)動
npm install -g appium@next
appium driver install uiautomator2
#2.Appium客戶端腳本
本次采用python客戶端,使用python3.7以上版本。下面安裝python客戶端。
pip install Appium-Python-Client
編寫測試腳本
import unittest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
capabilities = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US'
)
appium_server_url = 'http://localhost:4723'
class TestAppium(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Remote(appium_server_url, capabilities)
def tearDown(self) -> None:
if self.driver:
self.driver.quit()
def test_find_battery(self) -> None:
el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
el.click()
if __name__ == '__main__':
unittest.main()
到這里運(yùn)行這個腳本,就可以實(shí)現(xiàn)單機(jī)的自動化測試了。
#3.多個安卓模擬器并行測試
使用Android Studio Bumblebee,這是最后一個支持java 8的版本 https://developer.android.google.cn/studio/archive
在device manager中創(chuàng)建多個模擬器
改寫測試腳本,對每個模擬器添加參數(shù)
capabilitiesA = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US',
udid='emulator-5554',
mjpegServerPort='9200',
systemPort='8200'
)
其中 udid, mjpegServerPort, systemPort每個模擬器都需要定義不同端口。
并行測試腳本如下文章來源:http://www.zghlxwxcb.cn/news/detail-718421.html
import unittest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
capabilitiesA = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US',
udid='emulator-5554',
mjpegServerPort='9200',
systemPort='8200'
)
capabilitiesB = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US',
udid='emulator-5556',
mjpegServerPort='9201',
systemPort='8201'
)
capabilitiesC = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US',
udid='emulator-5558',
mjpegServerPort='9202',
systemPort='8202'
)
appium_server_url = 'http://localhost:4723'
class TestAppium(unittest.TestCase):
def setUp(self) -> None:
self.driverA = webdriver.Remote(appium_server_url, capabilitiesA)
self.driverB = webdriver.Remote(appium_server_url, capabilitiesB)
self.driverC = webdriver.Remote(appium_server_url, capabilitiesC)
def tearDown(self) -> None:
if self.driverA:
self.driverA.quit()
if self.driverB:
self.driverB.quit()
if self.driverC:
self.driverC.quit()
def test_find_battery(self) -> None:
el = self.driverA.find_element(by=AppiumBy.XPATH, value='//*[@text="Display"]')
el.click()
el = self.driverB.find_element(by=AppiumBy.XPATH, value='//*[@text="Display"]')
el.click()
el = self.driverC.find_element(by=AppiumBy.XPATH, value='//*[@text="Display"]')
el.click()
if __name__ == '__main__':
unittest.main()
#4.下一步計劃文章來源地址http://www.zghlxwxcb.cn/news/detail-718421.html
- 把安卓模擬器搬到docker上。
- 使用jenkins運(yùn)行測試腳本。
到了這里,關(guān)于使用Appium2.0自動化規(guī)模測試APP的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!