一、简介
Appium是一个开源的自动化测试工具,支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用。
二、安装准备
2.1、安装python Appium第三方库
pip install Appium-Python-Client
2.2、安装java jdk
2.3、安装android-studio(主要需要使用android sdk)
替换uiautomatorviewer.jar有定位xpath功能的jar包
uiautomatorviewer.jar下载地址
放在这个路径下:(备份原文件替换)
D:\Program Files (x86)\Android\android-studio\sdk\tools\lib
2.3.1、打开UiAutomatorViewer ,用于元素定位
D:\Program Files (x86)\Android\android-studio\sdk\tools
双击:uiautomatorviewer.bat
2.4、安装Appium
2.4、安装Nox模拟器
四、启动服务
4.1、启动Nox模拟器
启动后把要测试的app的apk文件拖入模拟器内,这里用的是计算器
4.2、启动APPium
4.2、连接Nox模拟器
打开cmd,进入模拟器Nox的安装路径
在模拟器bin目录打开控制台,执行adb.exe connect 127.0.0.1:62001,然后执行adb devices,看到如下信息就表
adb.exe connect 127.0.0.1:62001
adb devices
aapt dump badging XXX #app的apk文件路径
#举例
aapt dump badging F:\my_job\github_learn\apptest\测试apk\com.youdao.calculator-2.0.0.apk #app的apk文件路径
4.2、同步模拟器中的app界面,定位元素
五、执行自动化用例
test.py
import time
import unittest
from appium import webdriver
class MyTests(unittest.TestCase):
def setUp(self):
desired_caps = {'platformName': 'Android', # 平台名称
'platformVersion': '7.1.2', # 系统版本号
'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
'appPackage': 'com.youdao.calculator', # apk的包名
'appActivity': 'com.youdao.calculator.activities.MainActivity' # activity 名称
}
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium
self.driver.implicitly_wait(10)
def test_calculator(self, t=500, n=4):
"""计算器测试"""
time.sleep(3)
print("=======0")
window = self.driver.get_window_size()
x0 = window['width'] * 0.8 # 起始x坐标
x1 = window['width'] * 0.2 # 终止x坐标
y = window['height'] * 0.5 # y坐标
for i in range(n):
self.driver.swipe(x0, y, x1, y, t)
time.sleep(1)
self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()
print("=======1")
for i in range(5):
print("i:",i)
self.driver.find_element_by_id('com.youdao.calculator:id/iv_guide_img').click()
time.sleep(1)
print("=======2")
btn_xpath = '//android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'
self.driver.find_element_by_xpath(btn_xpath.format(13)).click()
self.driver.find_element_by_xpath(btn_xpath.format(20)).click()
self.driver.find_element_by_xpath(btn_xpath.format(12)).click()
time.sleep(5)
def tearDown(self):
self.driver.quit()
run.py
import os
import time
import unittest
test_dir = './testcase'
discover = unittest.defaultTestLoader.discover(start_dir='./testcase', pattern="test*.py")
if __name__ == "__main__":
runner = unittest.TextTestRunner(verbosity=2)
runner.run(discover)