一、Android SDK下载及配置
1、访问https://www.androiddevtools.cn/,下载Android SDK,提供有exe和zip两种格式下载
2、下载zip压缩包,直接解压至想要安装的路径
3、然后就双击“SDK Manager.exe”,启动SDK Manager,如图所示
介绍几个必须安装的插件:
3.1 Tools下Android SDK Platform-tools和Android SDK Build-tools
3.2 API的选择,最新的版本即可,Android是向下兼容的
3.3 extras下可以全部下载
3.4 上述选择完之后,点击Install package安装即可,点击Accept License
注意:这些插件都是在google 的服务器上下载的,会出现以下失败界面!
解决方案:进入C:\Windows\System32\drivers\etc目录下,右击hosts文件,最后一行添加74.125.237.1 dl-ssl.google.com
hosts文件需要写权限,右击属性、添加编辑权限,将信息添加完之后,再将权限修改为以前即可
上述插件安装完以后,即可配置Android SDK的环境变量,在此,不在过多赘述环境变量的配置
二、Android模拟器的下载配置
1、访问夜神官网下载夜神模拟器:https://www.yeshen.com/
夜神模拟器简单使用教程:https://www.bilibili.com/video/BV1Jx411H7bX?from=search&seid=14911741642336297293
注意:
模拟器配置好之后,adb devices 是不识别android模拟器的,需要以下两个步骤:
1、将SDK\platform-tools下的adb.exe,copy出来重命名为nox_adb.exe,替换到夜神模拟器bin目录下的 nox_adb.exe。
2、将SDK\platform-tools下的adb.exe文件,替换到夜神模拟器bin目录下的adb.exe
模拟器安装本地apk的方式:① 右键apk文件,打开方式选择为模拟器
② 拖动文件至模拟器上
2、网易mumu模拟器下载,使用adb connect 127.0.0.1:7555连接
三、Appium desired_capabilities的配置
"platformName": "Android", # 操作系统的名称
"plathformVersion": "5", # 操作系统的版本
"deviceName": "127.0.0.1:62001", # 设备名称
"appPackage": "com.hpbr.bosszhipin", # 应用程序的包名
"appActivity": ".module.launcher.WelcomeActivity", # 应用程序的主入口
"noReset": True, # 启动应用时是否重置
"unicodeKeyboard": True, # 用于支持中文输入
"resetKeyboard": True,
#注意:设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2
#'automationName':'UiAutomator2',#或者UiAutomator1,
'skipServerInstallation':True # 跳过UI2的安装,如果第一次运行程序,不要添加该配置
如何查看某个apk的包名及程序主入口:
# 打开应用刚启动的界面,然后在dos或者Linux终端命令行中分别输入以下指令
adb shell dumpsys activity top|findstr ACTIVITY # windows平台
# 或者以下命令
adb shell dumpsys activity recents|findstr intent={ # windows平台
adb shell dumpsys window w |findstr \/ |findstr name=
四、元素查看工具weditor介绍
用途:android原生控件定位工具
# 安装:先在计算机安装weditor组件
pip install --upgrade weditor
# 启动:
# 1、通过快捷方式启动:创建快捷方式,双击快捷方式
python -m weditor --shortcut
# 2、命令行启动
python –m weditor
# 3、手机安装ATX
# 安装uiautomator
pip install --pre --upgrade uiautomator2
#连上手机运行该命令
python -m uiautomator2 init
# 手机USB连接到电脑,确保adb命令可以连接,
# 在弹出的浏览器页面点击上面的Connect按钮。元素定位工具会自动连接手机
# 刷新页面可以点击Dump Hierarchy按钮
五、自动化手机网页
1、电脑上自动化手机页面,不需要appium
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", {"deviceName": "iPhone X"})
driver = webdriver.Chrome(desired_capabilities=options.to_capabilities())
driver.get("https://www.baidu.com")
input_kw = driver.find_element_by_id("index-kw")
input_kw.send_keys("自动化测试\n")
a_text = driver.find_element_by_xpath("//div[@class='ec_wise_ad']/div/div[1]/div/a/h3").text
print(a_text)
2、用手机浏览器自动化,电脑上浏览器驱动需要匹配手机浏览器的版本
from appium import webdriver
desired_caps = {
"platformName": "Android",
"plathformVersion": "5",
"deviceName": "6HJGK20516000047",
"browserName": "Chrome",
"noReset": True,
"unicodeKeyboard": True,
"resetKeyboard": True
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
3、混合应用webview:自动化嵌套在手机app内部的网页
准备工作:需要被测应用开启webview Debug模式
自动化webview界面内容需要匹配webview的版本
六、多终端测试
1、appium服务:appium启动,端口号不要相同
每一个设备,指定一个appium服务端口号,从4723开始,每多一个设备,默认递增2
2、配置项:指定本地与设备tcp通信的端口号
每一个设备,指定一个本地与设备tcp通信的端口号。从8200开始,每多一个设备,默认递增2,在启动参数当中,通过systemPort指定;因为appium服务会指定一个本地端口号,将数据转发到安卓设备上,默认都是使用8200端口,当有多个appium服务时就会出现端口冲突,会导致运行过程中出现socket hang up的报错。
# config.py
esired_caps = {
"platformName": "Android",
"appPackage": "com.hpbr.bosszhipin",
"appActivity": ".module.launcher.WelcomeActivity",
"noReset": True,
"unicodeKeyboard": True,
"resetKeyboard": True
}
android8 = desired_caps.copy()
android9 = desired_caps.copy()
android8["plathformVersion"] = 5
android8["deviceName"] = "127.0.0.1:62001"
android8["systemPort"]="8250"
android9["plathformVersion"] = 5
android9["deviceName"] = "6HJGK20516000047"
android9["systemPort"]="8255"
# 封装了一个或多个(端口号,desired_caps)组成的列表
android_params = [(4723,android8),(4725,android9)]
3、pytest并行多终端测试
3.1 pytest参数化
# test_appium.py
# 初始化加上启动参数
@pytest.fixture(scope="function", params=android_params) # android_params 封装了一个或多个(端口号,desired_caps)组成的列表
def setup_env(request):
print("初始化操作")
port = request.param[0]
desired_caps = request.param[1]
global driver
driver = webdriver.Remote(f"http://127.0.0.1:{port}/wd/hub", desired_caps)
driver.implicitly_wait(10) # 稳定元素
def teardown():
print("*"*30+"销毁teardown操作"+"*"*30)
driver.quit()
request.addfinalizer(teardown)
3.2 pytest并行多终端
3.2.1 安装pytest-xdist插件:pip install pytest-xdist
3.2.2 命令行执行命令,并行运行多个进程
pytest -sv test_appium.py -n 2