APP自动化测试
+,环境安装
升级:pip install -U selenium
+,yaml数据写入、读取方法封装:
import yaml
#读取数据
def analyze_data(file_name, case_key):
with open("../data/" + file_name + ".yaml", "r") as f:
data = yaml.load(f)[case_key]
data_list = list()
data_list.extend(data.values())
return data_list
#写入数据
data = {"id": "i", "name": "张三"}
with open() as f:
yaml.dump(data, f, encoding="utf-8", allow_unicode=True)
1,启动Android手机的参数
# 导模块
from appium import webdriver
# 创建⼀个字典,包装相应的启动参数
desired_caps = dict()
# 需要连接的手机的平台(不限制⼤⼩写)
desired_caps['platformName'] = 'Android'
# 需要连接的手机的版本号(⽐如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推)
desired_caps['platformVersion'] = '5.1'
# 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写;ios下必须写例如:iPhone 8)
desired_caps['deviceName'] = '192.168.56.101:5555'
# 需要启动的程序的包名
desired_caps['appPackage'] = 'com.android.settings'
# 需要启动的程序的界面名
desired_caps['appActivity'] = '.Settings'
# 解决中文问题
desired_caps['unicodeKeyboard']=True
desired_caps["resetKeyboard"]=True
# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
方法:
#获取当前包名,界面名
print(driver.current_package, driver.current_activity)
#关闭app
driver.close_app()
#启动其他APP 跳转到短信
driver.start_activity(包名,界面名)
# 将应用置于后台多少秒回来
driver.background_app(秒数)
# 判断应用是否已安装
driver.is_app_installed("包名")
# 卸载应用
driver.remove_app("包名")
# 安装应用
driver.install_app(r"应用路径")
# 滑动屏幕
1,滑动距离越远,效果距离越远;滑动时间越短,效果距离越远。
driver.swipe(start坐标x,start坐标y, end坐标x,end坐标y)
2,无惯性,从一个元素滑到另一个元素的位置
driver.drag_and_drob(start_element,end_element)
3,有 “很大惯性” ,传 “元素”
driver.scroll(start_element,end_element)
# 获取屏幕分辨率
获取宽度
driver.get_screen_size()["width"]
获取高度
driver.get_screen_size()["height"]
# 重启客户端
driver.start_client()
# 元素位置
element.lcation()
# 元素大小
element.size()
#TouchAction
#导包
from appium.webdriver.common.touch_action import TouchAction
#轻敲tap
TouchAction(driver).tap(element).perform()
TouchAction(driver).tap(x=700, y=700).perform()
#按下press
TouchAction(driver).press(x=700, y=700).perform()
#松开release
TouchAction(driver).press(x=700, y=700).release().perform()
#长按long_press
TouchAction(driver).long_press(x=700, y=700, duration=3000).perform()
#移动move_to
TouchAction(driver).press(x=238,y=849).move_to(x=1200,y=845).perform()
#设置网络
导包 from appium.webdriver.connectiontype import ConnectionType
driver.set_network_connection(ConnectionType.ALL_NETWORK_ON)
#回车
driver.press_keycode(66)
#返回
driver.press_keycode(4)
#打开通知栏
driver.open_notifications()
# 退出
driver.quit()
2,allure 报告
pip install pytest_allure_adaptor
配置文件添加 --alluredir report
下载allure-2.6.0.zip 解压到一个文件夹,配置bin目录的环境变量
报告中添加测试步骤:
@allure.step(title="测试步骤")
def test_demo:
pass
报告中添加文字描述:
allure.attach("描述", “测试步骤”, allure .attach _type.TEXT)
报告中添加截图:
allure.attach("截图",self.driver.get_screenshot_as_png(), allure.attach_type.PNG)
报告中添加严重级别:
1. BLOCKER 最严重
2. CRITICAL 严重
3. NORMAL 普通
4. MINOR 不严重
5. TRIVIAL 最不严重
@pytest.allure.severity(pytest.allure.severity_level.CRITICAL)
pytest生成xml格式的报告
allure generate report/ -o report/html --clean
3,Toast弹窗信息
下载安装nnode.js
安装cnmp命令: npm install -g cnpm --registry=https://registry.npm.taobao.org
下载 appium-uiautomator2-driver: cnpm install appium-uiautomator2-driver
drivere的前置代码添加 desired_caps['automationName'] = 'Uiautomator2'
正常查找元素即可使用