解放双手,提高生产力,这款神器你值得拥有
从石器时代开始,原始人来现已开始学会制作并运用东西,以满意自己的生活所需,这也是人类和动物最本质的区别,人类懂得制作并运用东西而动物不会。
21 世纪的现代社会更是如此,企业与企业之间是人才的竞争,而人的竞争力则严重依靠其会运用东西的多少以及熟练程度,究竟古人有云:「君子生非异也,善假于物也」。
软件测验作为软件发布前的最终一个环节,起着至关重要的作用。虽然在许多公司里相对于开发来讲,公司对测验岗都不太重视,但这必定不能掩盖其地位的重要性,稍有疏漏,就或许给公司带来巨大的损失。
纵观国内各公司大部分的测验工作仍然都是手动完结的,这不仅是对人力资源的巨大糟蹋,一起还伴随着巨大的潜在风险。因为人有时候会犯错,而机器则不会。所以咱们要尽或许的把能够自动化的操作交给机器去完结,从而解放咱们的双手,去做一些更有含义的工作。
什么是 Appium
Appium 是一个开源的移动端自动化结构,可用于测验原生运用,移动网页运用和混合型运用,且其是跨平台的,可用于 iOS 和 Android 操作系统。这也就意味着你能够针对不同的平台运用同一套 Api 来编写测验程序,以提高代码的服用行和可维护性。
规划思想
为了更好的应对千变万化的需求,Appium 没有和某一门详细的言语绑死,开发者能够运用自己最了解的任何言语来运用该结构。Appium 之所以这么灵活彻底得益于其优异的规划思路,该结构运用 client-server 的规划形式,只需 server 端能够收到 client 端发送过来的恳求,那么 client 端用什么言语来实现其实含义现已不大了,无关紧要。
这样的规划思想带来了巨大的优点,其一便是使结构能够做到支撑多言语,其二则是能够把 server 端放在任何机器上,即使是云服务器上也彻底没有问题。
入门
想必在程序圈儿的你必定对 Hello World 不生疏,每当咱们学习一个新的技能的时候根本都会写一个 Hello World 的 demo 来快速了解该技能,同样,今天我就带着咱们做一个入门 Appium。
首先咱们把环境搭建起来,依次装置下列软件。
- Android Studio
- JDK
- Python 3.8
- PyCharm
- 网易模拟器
- Appium 桌面版
之所以需求装置 Android Studio 彻底是因为链接安卓模拟器调试 App 程序时会用到 Android SDK,而 Android Studio 附带了 Andoid SDK,固直接装置 Android Studio。另外咱们挑选 Appium 桌面版,是因为桌面版附带可视化操作界面,对新手比较友爱。
其间前四个咱们或许都比较了解,自行装置即可。Appium 则需从 https://github.com/appium/appium-desktop/releases/tag/v1.18.3 下载对应的版别直接装置就能够了。
装置完结后发动 Appium,Host 和 Port 默许即可,接着点击下面的装备按钮进入装备页,设置完结 Android Home 和 Java Home 后直接发动 Server 就能够了。
当看到如下界面时,恭喜你,Server 现已发动成功了。
发动成功
接下来,咱们开始完善 client 端,其实便是代码罢了,直接调用 Api 即可。因为咱们是要经过 Appium 来操控模拟器上的 App,所以需求先将模拟器发动。命令行输入adb devices如果看到以下信息,则阐明模拟器是正常的。
接着便是编写 client 端代码了,
from appium import webdriver desired_capabilities = { "platformName": "Android", # 操作系统 "deviceName": "emulator-5554", # 设备 ID "platformVersion": "6.0.1", # 设备版别号 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 发动时主 Activity 'noReset': True # 是否保存 session 信息 能够防止从头登录 } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities) print('链接到安卓模拟器')
有了以上信息之后,咱们就能够经过程序直接链接到模拟器,然后自动发动微信 App 了。
那么发动了微信 App 之后咱们还能够做什么操作呢?根本上咱们手动能够做的操作,程序都能够替咱们完结。
driver.find_element_by_id('com.tencent.mm:id/f8y').click() print('查找搜索按钮') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python 技能') print('查找搜索输入框 & 写入搜索关键字') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/tm').click() print('点击 icon 图标') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/cj').click() print('点击右上角头像') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/a1u').click() print('点击第一篇文章')
上面这一套代码做了什么操作呢,简言之便是经过搜索找到「Python 技能」大众号,然后再去到该大众号主页并且查看了第一篇文章。一起程序为了给 App 留出一点反应时间,咱们在每次发送指令后均让程序休息 3 秒钟。
细心的你或许发现了,上述代码首要涉及到三个 Api,find_element_by_id()、send_keys()以及click,看函数名也就知道是做什么的了。
那么,咱们怎么知道某个元素的 ID 呢?这时候就又要请出咱们的桌面版 Appium 了。点击「发动成功」界面右上角的放大镜图标。之后将上述程序中的装备信息增加上去,最终点击「Start Session」按钮,不出意外的话你应该能看到微信发动界面了,便是那个地球。
可是细心的你会发现,模拟器上的界面和 Appium 上的不一致,此时需求你改写下 Appium 上的界面信息,点击下图中的改写按钮就能够了。
如果想获取某个元素的 ID,那么则先选中挑选按钮,接着选中你想要获取 ID 的元素即可。
总结
今天咱们学习了自动化神器 Appium,其实该结构不仅仅仅仅用来做测验,其用武之地可多着呢,比如定时给女票发微信提醒她「多喝热水」,哈哈哈,小伙伴们能够发挥自己的想象力做一些好玩的东西出来哦。
我有话说: