Python3+Appium基于安卓平台的app自动化

一、环境搭建

电脑端(Windows系统):

 1、安装Appium-Python-Client包,直接cmd窗口输入pip3 install Appium-Python-Client

 2、确保安装匹配版本的selenium和appium,使用命令pip install selenium -U

 3、安装Appium-windows,下载地址:http://appium.io/

 4、安装jdk,使用命令java -version检查jdk是否安装成功

 5、安装androidsdk,下载地址:

链接:https://pan.baidu.com/s/1xHDZU5nyLKb8aVtOwGr9zg
提取码:qgdq

  • 把下载好的androidsdk.zip压缩包解压。

 

  •  配置环境变量。

 

  • 新建一个ANDROID_HOME系统变量,变量值为上一步的路径。

  • 在path路径追加platform-tools路径

  • 打开cmd窗口输入adb,出现下图所示表示配置成功

手机端:

真机有线:

1、用usb线连接到电脑,一头连手机,一头连电脑,usb连接方式选择传输文件

2、进入手机设置,找到版本号,不断点击版本号,直到提示已处于开发者模式

3、搜索开发者模式,在开发者模式中,启动usb调试 ,确认授权电脑端调试,这样appium才能驱动手机

4、在电脑上执行adb devices命令,查看连接的设备,不显示设备的话在电脑和手机上安装手机助手再查看

 真机无线(adb无线连接功能)

1、先以usb有线连接方式连接到计算机

2、激活手机adb的无线服务(确保手机和电脑处于同一局域网)

在cmd命令行输入adb tcpip 5555

3、计算机以无线方式连接到手机

在cmd命令行输入adb connect  手机ip

4、连接成功后就可以拔掉有线了

 

 安卓模拟器

1、下载模拟器并安装

下载一款安卓模拟器,夜神模拟器下载地址:https://www.yeshen.com/

2、打开模拟器应用

在开发者模式中打开usb调试

3、连接模拟器

在cmd命令行输入adb connect 127.0.0.1:62001

 

二、元素定位工具

1、Appium-windows自带的

  • 点击启动appium

  • 点击第1个图标

  • 填写设备信息(需要与被测app保持会话才能定位元素),点击Start Session

2、weditor

  • 安装

  pip3 install weditor

  • 启动

  python -m  weditor

  • 运行

  在弹出的浏览器(默认浏览器最好不要设置为IE,一般选择谷歌或火狐)页面点击上面的Connect按钮,元素定位工具会自动连接手机,并在上面安装ATX程序(远程服务),没有自动安装的话,执行:pip3 install --pre --upgrade uiautomator2,python -m uiautomator2 init,接下来就可以查看元素了,刷新页面可以点击Dump Hierarchy按钮,也可以将右侧按钮设置成实时状态,这样不需要每次手动刷新页面了。

注意:

运行代码时,需要在ATX程序点击停止UIAUTOMATOR

 

3、androidsdk中的uiautomatorviewer

  • 点击uiautomatorviewer.bat打开

  • 点击第2个图标,打开设备后就可以进行元素定位了

 

 三、上代码

""
自动化BOSSAPP
选择第一个搜索结果,点击进入详情,
获取职位名称下面的信息:地区、工作年限、学历
"""
from appium import webdriver

# 自动化环境配置信息
desired_caps = {
    # 移动设备平台
    'platformName': 'Android',
    # 平台OS版本号,写整数位即可
    'plathformVersion': '10',
    # 设备的名称--值可以随便写
    'deviceName': 'test0106',
    # 提供被测app的信息-包名,入口信息:
    # 1.打开被测app,2.命令行输入以下信息
    # adb shell dumpsys activity recents | findstr intent={
    'appPackage': 'com.hpbr.bosszhipin',
    'appActivity': '.module.launcher.WelcomeActivity',
    # 确保自动化之后不重置app
    'noReset': True,
    # 设置session的超时时间,单位秒,默认60s
    'newCommandTimeout': 6000,
    # 设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2
    'automationName': 'UiAutomator2',  # 或者UiAutomator1
    'skipServerInstallation': True  # 跳过UI2的安装,如果第一次运行程序,不要添加该配置
}

# 创建驱动
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

driver.implicitly_wait(10)   # 隐式等待

# 1.点击放大镜
ele = driver.find_elements_by_id('com.hpbr.bosszhipin:id/img_icon')[1]
ele.click()

# 2.在搜索框输入自动化测试
driver.find_element_by_id('com.hpbr.bosszhipin:id/et_search').send_keys('自动化测试')

# 3.点击第一个搜索结果
driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_filtered_name').click()

# 4.获取当前页面所有职位信息元素
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').text
    # 输出薪资
    salray = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_salary_statue').text
    # 输出公司名称
    company = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_company_name').text
    # 5.点击进入详情
    job.click()
    # 6.获取职位名称下面的信息:地区、工作年限、学历
    address = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_location').text
    work_years = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_work_exp').text
    education = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_degree').text
    print(f'{name}|{salray}|{company}|{address}|{work_years}|{education}')
    driver.find_element_by_id('com.hpbr.bosszhipin:id/iv_back').click()  # 回退到职位信息列表

driver.quit()

 

posted @ 2020-09-24 20:21  lengjf  阅读(782)  评论(0编辑  收藏  举报