《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情

使用真机

阅读:413755201    分享到

上一节我们学习了如何使用模拟器写自动化测试程序,如果你已经开始做了实验,我相信你会骂娘的,不然你就是个忍耐能力超强的程序员,我对阁下的佩服犹如滔滔江水,连绵不绝,又如黄河泛滥,一发不可收拾......

下面我们就开始使用真机吧,对了说机不带吧,文明你我他。

前提条件

和使用模拟器做测试的前提条件一样,我再重新说一遍下面的废话。

安装 Python 解释器:Python 2 和 Python 3 都可以。点击安装 python 2 解释器或者点击安装 python 3 解释器。我们教程中使用 Python 3。

为了方便写程序,我们可以使用强大的 Python IDE(当然你也可以使用记事本),在此,我推荐使用 Pycharm,点击 Pycharm 安装和使用方法

安装 python-client,其实,python-client 的项目名称叫:Appium-Python-Client,我们可以使用 Python 自带的 pip 包管理工具进行安装,命令为: pip install Appium-Python-Client

写 Appium 测试程序

第一步:准备一台安卓手机(三星,华为,小米...都可以),因为我是个穷逼,我准备了一个老三星手机,可传输数据线一条(注意:如果打开了 USB 调试连接电脑没有反应只是显示充电,那这条数据线极可能是不能传输数据的,请更换数据线)。

第二步:打开 USB 调试,打开方法为:主菜单界面点击【应用程序】——在应用程序界面点击【设定】——在设定界面点击【关于手机】——在关于手机界面点击【版本号】,连续点击 7 次【版本号】直到出现提示【开发者模式已启用】。返回【设定】后——向下寻找是否有【开发者选项】,如果没有则返回继续猛戳【版本号】——如果有则点击【开发者选项】——进入【开发者选项】——打开【USB调试】,即可连接电脑上的第三方助手自动下载驱动连接了。

第三步:在【设定】——【一般】——【关于设备】中找到并记下“Android版本”的版本号,如下图。

第四步:获取手机的设备信息,打开命令提示符,输入:adb devices 命令查看连接的手机设备名称(确保配置好环境变量--配置环境变量请参考 设置 Android 环境变量,否则找不到 adb),记下该手机设备名称(注意:如果找不到设备,请安装好对应的手机驱动,如果你找不到对应手机的驱动,可以用 360 手机助手,会自动安装对应手机的驱动)

第五步:打开计算器(我们以操作真机上的计算器为例),然后打开命令提示符,定位到 adb 所在的目录路径,输入命令:adb shell 回车,再输入:dumpsys window | grep "mCurrentFocus"。记下 计算器的包名(com.sec.android.app.popupcalculator) 和计算器的主 activity(com.sec.android.app.popupcalculator.Calculator)。

第六步:打开 appium,点击左上角安卓图标,在弹出框中找到 Capabilities 菜单,找到 Platform Name 选项选中 Android,找到 Automation Name 选项选中 Appium,找到 PlatformVersion 选项选中选中你真机的版本(如果没有符合你真机版本的选项,选择任何版本都可以,这个并无要求),找到 Device Name 选项输入你真机的设备名称(其实也可以不设置)。

第七步:点击左上角齿轮图标,在弹出框中找到 Server 菜单,我们发现 Server Address 项默认为:127.0.0.1(如果你自动化程序和 appium 不在一个电脑上,请设置 appium 所在电脑的 ip 地址),Port 项默认为:4723(建议使用该默认设置),在此,我们使用的 ip 和 port 全部使用默认设置,如下图。

第八步:点击右上角 三角 按钮,启动 appium,我们看下 Appium 的启动日志,发现 Appium 在启动时使用我们设置的默认值,即本机的 4723 端口,也就是:127.0.0.1:4723。

> Launching Appium server with command: D:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 18 --automation-name Appium --device-name "7abf5bbc" --log-no-color
> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
> info: Appium REST http interface listener started on 127.0.0.1:4723
> info: [debug] Non-default server args: {"address":"127.0.0.1","logNoColors":true,"deviceName":"7abf5bbc","platformName":"Android","platformVersion":"18","automationName":"Appium"}
> info: Console LogLevel: debug

第九步:编写 appnium 测试脚本。

from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'     # 安卓系统
desired_caps['platformVersion'] = '4.3'      # 连接的设备(在此是我的三星手机)的操作系统是 4.3 版本
desired_caps['deviceName'] = '7abf5bbc'      # 我的三星手机的名称
desired_caps['appPackage'] = ' com.sec.android.app.popupcalculator'  # 计算器 app 的包名
desired_caps['appActivity'] = '.Calculator'  # 计算器 app 的主 activity(计算器启动的第一个页面)

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 连通过 ip 和端口 连接模拟器

driver.find_element_by_name("1").click()

driver.find_element_by_name("5").click()

driver.find_element_by_name("9").click()

driver.find_element_by_name("回退").click()

driver.find_element_by_name("9").click()

driver.find_element_by_name("5").click()

driver.find_element_by_name("加").click()

driver.find_element_by_name("6").click()

driver.find_element_by_name("等于").click()

driver.quit()

运行上面的代码和模拟器的代码除了 desired_caps 中的参数不同,还有计算器中的运算符号的 name 不同,那我们是如何知道控件的名称呢,稍安勿躁,后面我们会学习如何查看控件的属性。好了,现在你将会看到我的三星的老手机的运行界面:


如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
地主家的傻儿子
2019年8月29日 13:36 回复

博主很用心啊,直接在真机上做教程


user_image
宫羽
2019年4月6日 04:29 回复

计算器的那个 activity 是怎么找到的请问?


user_image
老鸟python
2019年4月20日 05:41

仔细看教程,这部分:


user_image
活在当下
2018年7月9日 22:44 回复

把女朋友吓了一跳哈哈,自动操作她的手机


user_image
zigbeek
2018年4月13日 21:10 回复

太强大了,以后抢东西刚刚的