Appium的使用与入门(这款神器你值得拥有)_其它综合

来源:脚本之家  责任编辑:小易  

从石器时代开始,原始人来已经开始学会制造并使用工具,以满足自己的生活所需,这也是人类和动物最本质的区别,人类懂得制造并使用工具而动物不会。

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,其实该框架不仅仅只是用来做测试,其用武之地可多着呢,比如定时给女票发微信提醒她「多喝热水」,哈哈哈,小伙伴们可以发挥自己的想象力做一些好玩的工具出来哦。

示例代码:https://github.com/JustDoPython/python-examples/tree/master/doudou/2020-10-20-appium

到此这篇关于Appium的使用与入门(这款神器你值得拥有)的文章就介绍到这了,更多相关Appium使用内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程详解使用python爬取抖音app视频(appium可以操控手机)Python+Appium实现自动化测试的使用步骤Python3+Appium安装使用教程

  • 本文相关:
  • 盘点网络编程必须要知道的基础知识
  • 编程语言里的静态、动态、强类型、弱类型等概念介绍
  • 网站搜索框使用微信扫码功能
  • webstorm 11.0.4安装图文教程
  • 分享win10 1903过tp的双机调试问题
  • jetpack开发中使用camerax完成拍照和拍视频功能
  • 计算机科学中32个常用的基础算法
  • vs code 使用svn插件的方法步骤
  • 字符集和字符编码(charset & encoding)
  • http请求返回415错误码定位解决方法
  • 如何使用入门款的天文望远镜?百度知道
  • 入门级推荐一款·百度知道
  • 新手提问:wacom手绘板672和671哪一个比较适合?百度知道
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页其它综合使用java+maven+testng框架实现超详细appium测试安卓真机教程详解使用python爬取抖音app视频(appium可以操控手机)python+appium实现自动化测试的使用步骤python3+appium安装使用教程盘点网络编程必须要知道的基础知识编程语言里的静态、动态、强类型、弱类型等概念介绍网站搜索框使用微信扫码功能webstorm 11.0.4安装图文教程分享win10 1903过tp的双机调试问题jetpack开发中使用camerax完成拍照和拍视频功能计算机科学中32个常用的基础算法vs code 使用svn插件的方法步骤字符集和字符编码(charset & encoding)最新idea2020注册码永久激活(激活intellij idea2020永久破解,亲测idea激活码最新获取方法(idea20删除svn三种方法delsvn(windows+最新intellij idea 2020.2永久激最新idea2020激活码超详细教程(设intellij idea 2020最新注册码(亲c/s和b/s两种架构的概念、区别和关于最新idea2020.2.1,2.2,3以上详解inet_pton()和inet_ntop()函数电子邮件 退信原因大全intellij idea2020永久破解,亲测可用!!webpack基础教程之名词解释总结一些你可能不知道的ip地址一看就懂的idea编辑器 .http教程详解滑动验证码的设计与理解浅谈oauth 2.0 的一个简单解释aergo ship:用于开发智能合约的包管理器matlab读取串口数据并显示曲线的实现示例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved