python手机app自动_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压缩包解压。

1153659-20200924155037481-1430489218.png

配置环境变量。

1153659-20200924155433288-1753773023.png

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

1153659-20200924155610136-612455050.png

1153659-20200924155632230-1909469709.png

在path路径追加platform-tools路径

1153659-20200924155911342-1343030239.png

1153659-20200924155922995-558188905.png

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

1153659-20200924160105020-32296554.png

手机端:

真机有线:

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

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

1153659-20200924161914482-138156163.png

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

1153659-20200924162550607-1824098286.png

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

1153659-20200924163715301-1662458911.png

真机无线(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

1153659-20200924193026499-1921330656.png

二、元素定位工具

1、Appium-windows自带的

点击启动appium

1153659-20200924170004398-12817504.png

点击第1个图标

1153659-20200924170037374-79873987.png

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

1153659-20200924170410694-480993845.png

1153659-20200924174600799-1293739908.png

2、weditor

安装

pip3 install weditor

启动

python -m weditor

运行

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

1153659-20200924175741811-1663363993.png

注意:

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

1153659-20200924180612950-237591382.png

3、androidsdk中的uiautomatorviewer

点击uiautomatorviewer.bat打开

1153659-20200924181145681-1162512743.png

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

1153659-20200924181628857-513072927.png

1153659-20200924182039319-1688600989.png

三、上代码

""自动化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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值