APP自动化测试-Appium

环境搭建

1,安装client编程库

pycharm中安装appium-python-client

pip install appium-python-client

2,安装Appium Server

3,安装JDK

4,安装 Android SDK

--------------------------------------------------------------------------

手机启动开发者模式,并允许USB调试

打开命令行窗口测试是否连接成功

adb devices -l

查找 应用 Package 和 Activity

adb shell dumpsys activity recents | find "intent={"

例子一:

# 2023-07-04
from
appium import webdriver from selenium.webdriver.common.by import By from appium.webdriver.extensions.android.nativekey import AndroidKey desired_caps = { 'platformName': 'android', # 被测手机是安卓 'platformVersion': '12', # 手机安卓版本 'deviceName': 'abc', # 设备名,安卓手机可以随意填写 'appPackage': 'tv.danmaku.bili', # 启动APP Package名称 'appActivity': '.MainActivityV2', # 启动Activity名称 'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True 'resetKeyboard': True, # 执行完程序恢复原来输入法 'noReset': True, # 不要重置App 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' # 'app': r'd:\apk\bili.apk', } # 连接Appium Server,初始化自动化环境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 设置缺省等待时间 driver.implicitly_wait(5) # 如果有`青少年保护`界面,点击`我知道了` iknow = driver.find_elements(By.ID, "text3") if iknow: iknow.click() # 根据id定位搜索位置框,点击 driver.find_element(By.ID, 'expand_search').click() # 根据id定位搜索输入框,点击 sbox = driver.find_element(By.ID, 'search_src_text') sbox.send_keys('白月黑羽') # 输入回车键,确定搜索 driver.press_keycode(AndroidKey.ENTER) # 选择(定位)所有视频标题 eles = driver.find_elements(By.ID, 'title') for ele in eles: # 打印标题 print(ele.text) input('**** Press to quit..') driver.quit()

 参考学习:https://www.byhy.net/tut/auto/appium/01/#%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90

例子二:

# 导包
from appium import webdriver
from selenium.webdriver.common.by import By

# 准备自动化配置信息
desired_caps = {
    # 移动设备平台
    'platformName': 'Android',
    # 平台OS版本号,写整数位即可
    'plathformVersion': '12',
    # 设备的名称--值可以随便写
    'deviceName': 'test0106',
    # 提供被测app的信息-包名,入口信息
    'appPackage': 'com.hpbr.bosszhipin',
    'appActivity': '.module.launcher.WelcomeActivity',
    # 如果被测应用没有安装到手机上,可以指定apk的在电脑上路径
    # 'app':r'D:\apk\xxx.apk',
    # 确保自动化之后不重置app
    'noReset': True,
    # 设置session的超时时间,单位秒
    'newCommandTimeout': 6000,
    # 如果不想每次都安装UI2驱动,可以这么设置
    'skipServerInstallation': True
}

# 初始化driver对象-用于控制手机
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)  # 稳定元素

# 点击放大镜
driver.find_element(By.XPATH, '//*[@resource-id="com.hpbr.bosszhipin:id/ly_menu"]/android.widget.RelativeLayout[2]/.').click()

# 搜索框输入职位信息
search_input = driver.find_element(By.ID, 'com.hpbr.bosszhipin:id/et_search')
search_input.send_keys('软件测试')  # 输入参数

# 选择符合条件的第一个搜索结果
driver.find_element(By.ID, 'com.hpbr.bosszhipin:id/tv_filtered_name').click()

# 获取当前页面所有职位信息元素
job_msg = driver.find_elements(By.ID, 'com.hpbr.bosszhipin:id/view_job_card')

for job in job_msg:
    # 输出岗位名称
    name = job.find_element(By.ID, 'com.hpbr.bosszhipin:id/tv_position_name')
    # print(name.text)
    # 输出薪资
    salray = job.find_element(By.ID, 'com.hpbr.bosszhipin:id/tv_salary_statue')
    # print(salray.text)
    # 输出公司名称
    # 找到元素返回包含一个元素的列表,找不到就返回空列表
    company = job.find_elements(By.ID, 'com.hpbr.bosszhipin:id/tv_company_name')
    # 避免屏幕遮挡了公司名,查到不到目标元素,设置一共默认值
    company_text = ''
    # 当找打company元素的时候,就使用该元素的文本
    if company:
        company_text = company[0].text

    print('%s|%s|%s' % (name.text, salray.text, company_text))

# 点击第一个搜索结果
job_msg[0].click()

# 获取职位名称下面的信息:地区、工作年限、学历、工作性质
location = driver.find_element(By.ID, 'tv_required_location').text

work_exp = driver.find_element(By.ID, 'tv_required_work_exp').text

degree = driver.find_element(By.ID, 'tv_required_degree').text

print(f'地区:{location}|工作经验:{work_exp}|学历:{degree}')

driver.quit()

 

adb无线连接手机

注意:设置手机和PC在同一网络下,即连接同一WIFI;用USB连接手机

1,查看设备连接

adb devices -l

2,开启手机的5555端口

adb tcpip 5555

3,查看手机ip地址

adb shell ip -f inet addr show wlan0

4,运行connect命令

adb connect 192.168.101.15:5555

5,再次查看设备

adb devices -l

 问题:

使用USB调试模式后手机的输入法不能用了?

解决方法:手机设置里面修改输入法。

 

Appium 服务器初始化参数 (Capability)

https://www.cnblogs.com/poloyy/p/12916569.html

官方文档翻译:https://static.kancloud.cn/testerhome/appium_docs_cn/2001853

常用的ADB命令:

1,连接模拟器

adb connect 127.0.0.1:62001

各个模拟器的port:adb connect 127...1:port(设备)
模拟器名称 默认端口
Genymotion模拟器 5555
夜神模拟器 62001/52001
海马玩模拟器 26944
mumu模拟器 7555
天天模拟器 6555
逍遥安卓模拟器 21503
BlueStacks蓝叠3模拟器 5555
雷神安卓模拟器 5555
腾讯手游助手 5555

2,查看连接的设备

adb devices -l

3,查看被测app的包名及入口启动页面

先进入aapt所在的路径:D: \Andriod_SDK\bui1d-tools\29.0.3>

aapt dump badging apk的路径

有apk时

adb shell dumpsys activity recents | find "intent={"

Appium日志查看

 可定位的控件属性

 

Allure报告

https://blog.csdn.net/weixin_44896406/article/details/127010563

Allure报告生成命令

allure generate case\report -o allure-report --clean

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-07-04 18:03  天才九少  阅读(306)  评论(0编辑  收藏  举报