一、安裝與配置
1、安裝 appium:
npm install -g appium
2、安裝 appium-doctor:
npm install -g appium-doctor
3、執行 appium-doctor:
appium-doctor
會檢測所需的環境是否安裝及配置完成,如有提示缺失環境就要安裝相應的環境。
二、appium基礎
1、初始化一個Driver
在使用appium時,我們一定會選擇客戶端來打開一個手機 APP,並對其進行測試或操作,接下來我們就來講講如何初始化一個 Driver。
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'platformVersion': '9.0',
'deviceName': 'Pixel_2_API_28',
'appPackage': 'com.android.settings',
'appActivity': 'com.android.settings.Settings'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
2、查找元素
查找元素是自動化測試的核心,appium 提供了很多方法來查找元素,如:ById、ByClassName、ByName等,下面是一個使用 ById 查找元素的實例:
element = driver.find_element_by_id('com.example:id/button')
三、appium常用操作
1、滑動屏幕
有時我們需要模擬用戶滑動屏幕的操作,appium提供了 swipe 方法來完成滑動屏幕的操作,下面是一個簡單的方法:
driver.swipe(start_x, start_y, end_x, end_y)
2、輸入文本
appium提供了 send_keys 方法來完成輸入文本的操作,下面是一個使用 send_keys 方法的實例:
element = driver.find_element_by_id('com.example:id/edit_text')
element.send_keys('hello appium')
3、截圖
對於自動化測試,偶爾需要查看完整的屏幕快照,以便了解當前屏幕中的元素分佈情況,appium提供了 get_screenshot_as_file() 方法來截取屏幕快照,下面是一個使用 get_screenshot_as_file 方法的實例:
driver.get_screenshot_as_file('screenshot.png')
四、進階應用
1、多平台支持
appium不僅支持 Android 平台,還支持 iOS 平台,下面是一個簡單的多平台測試腳本示例:
from appium import webdriver
desired_caps = {
'platformName': 'iOS',
'platformVersion': '12.0',
'deviceName': 'iPhone XR',
'app': 'app_path'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
2、運行測試套件
在實際的測試中,我們往往需要運行多個測試腳本組成的測試套件,appium 支持 unittest、nose和py.test 等測試框架,下面是一個執行測試套件的示例:
import unittest
from appium import webdriver
class TestApp(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'platformVersion': '9.0',
'deviceName': 'Pixel_2_API_28',
'appPackage': 'com.android.settings',
'appActivity': 'com.android.settings.Settings'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def test_case1(self):
element = self.driver.find_element_by_id('com.example:id/button')
element.click()
assert element.text == 'clicked'
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestApp)
unittest.TextTestRunner(verbosity=2).run(suite)
3、並發執行測試用例
並發執行測試用例可以縮短測試用例的執行時間,提高測試效率。appium 支持多種語言的客戶端,並且很容易地支持並發執行測試用例,下面是一個 python 並發執行測試用例的示例:
from appium import webdriver
import threading
desired_caps_android = {
'platformName': 'Android',
'platformVersion': '9.0',
'deviceName': 'Pixel_2_API_28',
'appPackage': 'com.android.settings',
'appActivity': 'com.android.settings.Settings'
}
desired_caps_ios = {
'platformName': 'iOS',
'platformVersion': '12.0',
'deviceName': 'iPhone XR',
'app': 'app_path'
}
def test_android():
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps_android)
element = driver.find_element_by_id('com.example:id/button')
element.click()
assert element.text == 'clicked'
driver.quit()
def test_ios():
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps_ios)
element = driver.find_element_by_name('element_name')
element.click()
assert element.text == 'clicked'
driver.quit()
threads = []
t1 = threading.Thread(target=test_android, args=())
threads.append(t1)
t2 = threading.Thread(target=test_ios, args=())
threads.append(t2)
for t in threads:
t.start()
for t in threads:
t.join()
總結
本文詳細介紹了 appium 的安裝、基本使用、常見操作、進階應用等方面,讀者可以通過本文快速掌握 appium 的使用方法,並在實際項目中進行應用。
原創文章,作者:BJSRA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/361841.html