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使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程

    前言:前段时间做了selenium的学习和实践,有点意犹未尽,所以自己就又学了下Appium的使用,因为这一套东西在16年已经停止维护了,不管实现还是设计上都不是很容易,也踩了很多坑,现在在此记录下大概过程.后续有时间再完善手册. 一.准备 安装SDK,配置环境变量 链接: https://pan.baidu.com/s/1g2QaWjdfg6Txa0gZf9kk3A 提取码: 8aaz windows配置环境SDK变量 我的电脑右键->属性 点击高级系统设置 点击环境变量 点击新建按钮,变量名

  • Python3+Appium安装使用教程

    一.安装 我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation) appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobile App Automation Made Awesome). appium可以通过Desktop App和npm两种方式安装.Desktop App类似于selenium IDE提供一个图形界面式操作工具:npm类似于selenium就只能使用命令行. 如果对appium还不太熟悉,推荐使用De

  • 详解使用python爬取抖音app视频(appium可以操控手机)

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思路: 假设已经配置好我们所需要的工具 1.使用mitmproxy对手机app抓包获取我们想要的内容 2.利用appium自动化测试工具,驱动app模拟人的动作(滑动.点击等) 3.将1和2相结合达到自动化爬虫的效果 一.mitmproxy/mitmdump抓包 确保已经安装好了mitmproxy,并

  • Python+Appium实现自动化测试的使用步骤

    一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows,官网地址http://appium.io/ 点击下载按钮会到GitHub的下载页面,选择对应平台下载 安装完成后,启动Appium,host和port默认的即可,然后设置Android SDk和Java JDK 然后点下

  • Appium的使用与入门(这款神器你值得拥有)

    从石器时代开始,原始人来已经开始学会制造并使用工具,以满足自己的生活所需,这也是人类和动物最本质的区别,人类懂得制造并使用工具而动物不会. 21 世纪的现代社会更是如此,企业与企业之间是人才的竞争,而人的竞争力则严重依赖其会使用工具的多少以及熟练程度,毕竟古人有云:「君子生非异也,善假于物也」. 软件测试作为软件发布前的最后一个环节,起着至关重要的作用.虽然在很多公司里相对于开发来讲,公司对测试岗都不太重视,但这绝对不能掩盖其地位的重要性,稍有疏漏,就可能给公司带来巨大的损失. 纵观国内各公司大

  • python实现跨年表白神器--你值得拥有

    hello,大家好,我是Dream.马上就跨年了,为了广大的单身男性成员,我就慈悲一下,把我的存货–表白神器拿出来了,百试百灵(虽然我一次也没试过),今天分享给大家,别忘了给我点赞哟~ 话不多说,先看效果图: 从图上看,很明显这是一个选择题,但代码的神奇之处就在这里,当她把鼠标拖到'不行'的地方时,奇迹发生了,当当当~ 屏幕上会轮番展示出你的优点,这是我的优点(我只是实话实说的哟) 最最最重要的是她关不掉窗口,重要的事说三遍:关不掉 关不掉 关不掉 就是关不掉!!!气死她哈哈哈...(你好贱,我

  • Python+Appium实现自动化清理微信僵尸好友的方法

    随着微信的使用时间越长,微信好友也越来越多,有些好友将你删除了你也不知道.当我们发消息的时候会出现下面扎心的一幕,然后默默将他删除 使用 Appium 基础的 appium 使用在公众号文章 <解放双手,提高生产力,这款神器你值得拥有> 中已经讲过了,这里使用最新 1.20.0 版本的 appium,旧版本会出现真机微信闪退的情况 安装一下 Python 用到的模块 pip install Appium-Python-Client 获取好友列表 在 Pycharm 中配置一下启动环境 desi

  • Java线上问题排查神器Arthas实战原理解析

    概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办.原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat.jmap.jstack. jconsole.visualvm.Java Mission Control.MAT等.但此刻的你没有看错,还有一款神器Art

  • 详解Python pygame安装过程笔记

    今天看到一个教程,是关于Python安装pygame模块的.觉得很好,拿来分享一下. 安装Python 额,这个小题貌似在这里很是多余啊.但是为了照顾到刚刚学习Python的童鞋,我还是多啰嗦两句吧. 具体如下: 我们要到Python官网.去下载我们需要的版本.我这里下载的是windows64位 的Python2.7 msi.安装的过程如果不懂,选择为默认即可. 安装easy_install 至于这是个什么东东?我们大可不必劳心,现在只需要知道它能帮助我们安装一些库就可以了.具体的安装过程也很简

  • Android 微信摇骰子和猜拳作弊器原理解析

    一.前言 在之前的一篇文章中我们已经详细介绍了Android中Hook工作的一款神器Xposed工具:Xposed框架原理解析和使用案例分析 在那一篇文章中我们介绍了如何安装Xposed框架,以及如何使用Xposed库编写第一个模块来做到修改系统方法功能的效果,同时也说到了一个非常重要的知识点就是:在Hook过程中最重要的一点就是如何找到Hook点,而对于这一点很多同学都会感觉到非常的困难,因为对于修改系统方法还好,因为可以简单的去查看具体的Android源码即可,但是如果说要去编写一些应用和游

  • Python采用Django开发自己的博客系统

    好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了.但是我遇到了Django这么一款神器,没想到我的博客系统就这么建立起来了.虽然是最基础的类型.但是也算是成功了,这篇博客比较适合对Django有了一定了解的童鞋,如果是新手的话,建议先看一下django的基础知识点再来做实验,这样效率更高! 好了,话不多说,开始吧. 搭建框架  •创建项目及应用 搭建框架的意思,就是安装Django以及做好相关的配置.因为我是在

  • Python多版本开发环境管理工具介绍

    前言 在Python开发中,有些情况下,我们可能面临在一台机器上同时安装多版本Python的需求.比如: 有多个Python项目,每个项目依赖不同的Python版本. 有一个Python项目,它需要同时支持多个Python版本. 那么,如何高效地在单台机器上实现多个版本Python(具体来说,这里Python指的是Python解释器)的安装和维护呢? 除此之外,我们还可能面临在一台机器上安装多个版本的某个Python第三方库的需求.比如:有多个Python项目,每个项目依赖于不同版本的Pytho

  • vscode中配置LeetCode插件的教程(愉快刷题)

    大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器.但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决.所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑. 简介vscode vscode在工业界鼎鼎大名,被誉为微软少有的拿得出手的精品(逃).原本是不想过多赘述的,但是鉴于许多粉丝还是正在上学的萌新,所以花点笔墨简单介绍一下. vscode是微软开发的编辑器,严格说起来它并不是一个IDE,只是一个编辑器.但是由于它支持嵌

  • vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能

    随着前端技术的飞速发展,大数据时代的来临,我们在开发项目时越来越多的客户会要求我们做一个数据展示的大屏,可以直观的展示用户想要的数据,同时炫酷的界面也会深受客户的喜欢. 大屏展示其实就是一堆的图表能够让人一目了然地看到该系统下的一些基本数据信息的汇总,也会有一些实时数据刷新,信息预警之类的.笔者在之前也做过一些大屏类的数据展示,但是由于都是一些图表类的,觉得没什么可说的,加之数据也都牵扯到公司,所以没有沉淀下来什么. 最近有朋友要做一个大屏,问了自己一个问题,自己也刚好做了一个简单的大屏数据展示

随机推荐