分享好友 最新动态首页 最新动态分类 切换频道
手机APP爬取之Appium的基本认识与使用
2024-12-26 09:05

作者后浪v

零、写在前面

偷懒一个月没有更新博客了,偶尔打开CSDN看到仍有许多点赞和关注消息,唔~
来个冠冕堂皇的理由——最近听音乐去了

( ˃̶̤́ ꒳ ˂̶̤̀ )

一首让人激动且平静的歌,分享出来~

♪ 点击播放

 

一、Appium的基本原理与安装

1. 相关链接
    2. 简介

    Appium 是一个移动跨平台移动端自动化测试工具,可以非常便捷的为IOS和Android平台创建自动化测试用例。它可以模拟APP内部的各种操作,如点击、滑动、文本输入等等,只要我们手动操作Appium就可以完成。另外,Appium实际上继承了Selenium,Appium也是利用WebDriver来实现App的自动化测试的。
    Appium相当于一个MITM,我们将编程语言(例如PYTHON)传给Appium,Appium就会根据不同的操作指令对移动设备进行驱动,完成不同的动作,例如

    • 自动化完成一些重复性的任务
    • 爬虫
    • 自动化测试
    3. 工作原理

    这幅图, 包含了 3个主体部分 : 自动化程序、Appium Server、移动设备

    • 自动化程序:自动化程序是由我们来开发的,实现具体的手机自动化功能。
    • Appium Server:负责管理手机自动化环境,并且转发自动化程序的控制指令给手机,转发手机给自动化程序的响应消息。
    • 手机设备:Appium Server 会在手机上 安装一个 自动化代理程序, 代理程序会等待自动化指令,并且执行自动化指令。
    4. 所需安装包

    接下来的演示均以Python语言为例,不足之处请多多指出。
    请确保PC已经搭建好Python环境和安装编辑器,另外需要安装Appium、JDK和下载好Android SDK。
    因为软件较多且多布置在国外网站,这里我整理在百度网盘以供大家使用

    点击跳转到网盘链接
    提取码:u0na

    你点击链接的样子是不是像极了给我博客点赞时帅气的样子呢?不要下次一定了叭~~

    5. 自动化环境搭建
    5.1 Appium Server安装

    Appium Desktop官方下载 点击跳转
    Appium组织为了方便大家安装使用,制作了一个可执行程序 Appium Desktop,把 nodejs 运行环境、Appium Server 和一些工具打包在里面了,只需要简单的下载安装就可以了。

    5.2 安装client编程库

    根据原理图,我们知道自动化程序需要调用客户端库和Appium Server进行通信。
    因为我们介绍Python语言开发,所以就需要用pip安装库,如下:

     
    
    5.3 安装JDK

    安卓APP的自动化,必须要安装安卓SDK,而安卓SDK需要JDK环境。网盘下载: jdk-8u211-windows-x64.exe
    安装好之后,还需要添加一个环境变量 JAVA_HOME,指定值为jdk安装目录,比如:

     
     
    
    5.4 安装 Android SDK

    对于安卓APP的自动化,Appium Server 是需要 Android SDK的。
    因为要用到里面的一些工具,比如 要执行命令设置手机、传送文件、安装应用、查看手机界面等。
    可以从上面给出的百度网盘连接下载最新的 Android SDK文件包: androidsdk.zip ,并且解压,即可。
    解压完成后,需要 配置一下添加一个环境变量ANDROID_HOME,设置值为sdk包解压目录,比如

     
    

    另外,还推荐大家配置环境变量PATH,加入adb所在目录:

     
     
    
    6. 连接手机

    连接好以后,打开命令行窗口, 执行

     
    

    命令来列出连接在电脑上的安卓设备。
    如果输出类似如下的内容

    List of devices attached
    4d0035dc767a50bb evice product:LCT_LA100 xxx:HUAWEI
    device:01

    表示电脑上可以查看到 连接的设备,就可以运行自动化程序了。

    7. 区分用户变量和系统变量(补充

    首先来解释一下什么是环境变量path。
    环境变量 Path 中包含的 这些目录, 就是 Windows查找程序的目录。
    环境变量 Path 的内容包括了多个目录,目录之间用分号隔开。
    当我们在CMD中敲入下面的命令时:

    python Appium_Bilibili.py

    Windows 命令执行器 就会依次搜索如下目录

    • C:Python38Scripts;
    • C:Python38;
    • C:%USERPROFILE%AppDataLocalMicrosoftWindowsApps;
    • C:Program Files (x86)mitmproxybin;
    • C:Windowssystem32;
    • C:Users ingyAppDataLocalProgramsMicrosoft VS Codebin;
    • C:WindowsSystem32Wbem;
    • C:WindowsSystem32WindowsPowerShellv1.0

    看这些目录中,是否有 python.exe 或者 python.bat 之类的可执行文件,如果有就执行他们。
    区别(引用博客

    • 系统变量:对所有的用户起作用
    • 用户变量:对当前用户起作用

    注意:系统变量与用户变量的PATH:告诉系统可执行文件放在什么路径(平常执行程序的路径,要放在PATH里面,不能建一个变量,cmd会提示“不是内部或外部命令,或者不是可执行程序”

    二、代码展示与分析

    前面说过,Appium继承了Selenium的WebDriver类,实际上代码可以参考selenium网页自动化。

    Say Is Easy. Show Thou Code!

     
    

    运行代码前,要先 运行Appium Desktop

    首先,封装了desired_caps字典,传入了手机信息,被测试软件信息,输入法信息,自动化服务的相关信息。

    查询启动APP Package与启动Activity名称的方法

    手机成功连接电脑后,打开被测试的手机APP,然后通过ADB(Android Debugger Bridge) 命令查看手机最近运行程序

     
    

    我们来着重关注cmp参数

     
    

    其中cmp中“/”前半段就是APP Package名称,后半段就是Activity名称。

    如下所示

    主要来说说实例化这一行。

     
    

    此行代码调用了webdriver的Remote方法,Appium Server启动后会在本地创建一个默认端口号: 127.0.0.1:4723,这里加入了这个参数,并且传入了之前配置好的desired_caps字典。

    remote 英[rɪˈməʊt] 美[rɪˈmoʊt]
    adj.偏远的; 偏僻的; 遥远的; 久远的; 关系较远的; 远亲的;
    n. 远程;
    [例句]Landslides have cut off many villages in remote areas.
    滑坡使边远地区的许多村庄与外界隔绝。
    [其他]比较级:remoter 最高级:remotest

    很难直观的看出Romote()方法的功能,那么的,一起来看看源代码

    第19行

     
    

    这就明白了,Remote实际上就是WebDriver类。

    接下来我们看看WebDriver类。

    可以看到,WebDriver把desired_caps传入了一个个的方法去执行。所以,这里的Romote()方法做了很多事情

    • 识别一个Android且版本为10的手机设备并连接
    • 找到被测试的App对象并通过Lancher启动它
    • 配置好适合的输入法
    • 配置好UIAutomator

    到这里,初始化就完成了。

    三、元素定位与界面操作

    Appium是基于Selenium的,所以和Selenium代码定位元素的基本规则相同。

    1. 界面元素查看工具
    • Android Sdk包中的 uiautomateviewer
    • Appium Desktop 中的 Appium Inspector
    2. 定位元素的方法
    2.1 根据ID

    对于安卓应用元素的 resource-id 属性

     
    
    2.2 根据CLASS NAME

    对应安卓应用元素的类型

     
    
    2.3 根据ACCESSIBILITY ID

    元素的 content-desc 属性是用来描述该元素的作用的

     
    
    2.4 根据Xpath

    表达式的语法规则和 Selenium 里面 Xpath 的语法是一样的
    在appium中,xpath表达式中每个节点名是元素的 class 属性值

     
    
    3. 安卓 UIAutomator

    谷歌安卓官方文档

    4. 界面操作
    • driver.click() # 点击

    • driver.tap([(850,1080)],300) # 点按

    • driver.send_keys(string) # 输入

    • driver.swipe(start_x=x, start_y=y1, end_x=x, end_y=y2, duration=800) # 滑动

    最新文章
    2017年中国智能网联汽车十大投融资事件
        日前,在中国汽车产业趋势与投资高峰论坛上,2017年中国智能网联汽车十大投融资事件正式发布。     2017年中国智能网联汽车十大投融资事件     随着社会的不断发展,城市的交通资源日趋紧张,涵盖了通讯和物联网技术的智能
    elementui中 img 如何放大预览
    随着前端技术的不断发展,网页也越来越缤纷多彩。而图片在其中扮演着至关重要的角色,为了更好的展示图片,我们需要正确的使用属性。在本文中,我将可视化的讲解、和,以及如何处理多背景叠加的问题。根据MDN的定义,是简写属性,用于一次
    2024年8月6日定期维护公告
    亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,《梦幻西游》所有服务器将于2024年8月6日上午8:00停机,进行每周例行的维护工作。预计维护时间为上午8:00至9:30,请各位玩家相互转告,并提前留意游戏时间,以免造成不必要的损失。对
    2024大学排名不好原因
    2024大学排名下降的原因排名下降原因分析指标体系变化 :排名系统可能进行了更新或调整,导致评价标准发生变化,从而影响了学校的排名。疫情影响:疫情期间的出入境限制可能影响了高校的教学、研究以及国际合作,进而影响了排名。地方支持
    Magento、WooCommerce和Shopify三个外贸建站平台对比
    Magento、和是现在外贸建站的三大主流选择。WooCommerce拥有数百万个活动网站,Shopify拥有超过500,000个客户,并且Magento长期以来一直拥有250,000多个网站。它们具有可伸缩性,功能性,提供了一些非常好的设计,即使没有任何网站建设经验
    Bing广告投放+优化的详细教程来了!
    微软于2019年4月将必应广告平台(Bing Ads)更名为Microsoft Advertising。他们将Bing Ads与其他单独的广告工具和服务合并。于是现在,广告主可以同时在Bing搜索引擎和Microsoft受众群体网络(包括MSN和许多其他网站)上展示广告。 Microso
    123漫画
    123漫画app是一款非常强大的漫画软件。在该软件上可以轻松的观看各种漫画资源,包含了全网的漫画都能在这里观看,非常的给力。而且还有详细的漫画分区,可以方便大家在软件上和寻找自己喜欢的漫画类型来看。都是彩漫,不管是国漫还是韩漫、
    2025古北壹号公馆(售楼处)官方网站-古北壹号楼盘百科-上海房天下
    古北壹号公馆售楼处电话400-8569-058:据网易手机网 2024 年 10 月 31 日消息,此为古北壹号公馆售楼处电话1.400-8569-058:据网易手机网 2024 年 7 月 21 日消息,该号码是古北壹号公馆售楼处电话2.400-8569-058:据网易手机网 2024 年 12
    2024年阿里云大促活动尾声,4核16G服务器10M 210元3个月!
    ​​2024年阿里云大促活动尾声,4核16G服务器10M 210元3个月!阿里云大促最后几天,云产品每年都涨价,错过优惠不再有!年末阿里云服务器租用费用价格:阿里云ECS云服务器e系列2核2G配置3M固定带宽99元一年,ECS u1实例2核4G、5M固定带宽、
    erp系统软件在中国排名第几 erp系统软件中国排名 erp系统最新排名情况分析 助您了解行业趋势
    在中国,系统软件的排名可以根据多个标准来衡量,包括市场份额、用户满意度、功能性和创新性等。根据最新的市场分析,1、金蝶、2、用友、3、SAP、4、Oracle、5、浪潮是目前在中国市场上排名前五的ERP系统软件。这些系统各自具有独特的优势
    相关文章
    推荐文章
    发表评论
    0评