只会用Selenium爬网页?Appium爬App了解一下

本文介绍了Appium作为移动端自动化测试工具,它如何扩展Selenium的功能,用于iOS和Android App的测试。文章以Android平台的微信为例,详细讲解了使用Appium的准备、启动App、配置Desired Capabilities以及使用Python代码进行操作,包括初始化、查找元素、点击、屏幕拖动等API的用法。此外,还提供了Appium操作App的基本用法和常用API的实践示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

Appium是一个跨平台移动端自动化测试工具,可以非常便捷地为iOS和Android平台创建自动化测试用例。它可以模拟App内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作Appium都可以完成。在前面我们了解过Selenium,它是一个网页端的自动化测试工具。Appium实际上继承了Selenium,Appium也是利用WebDriver来实现App的自动化测试。对iOS设备来说,Appium使用UIAutomation来实现驱动。对于Android来说,它使用UiAutomator和Selendroid来实现驱动。

Appium相当于一个服务器,我们可以向Appium发送一些操作指令,Appium就会根据不同的指令对移动设备进行驱动,完成不同的动作。

对于爬虫来说,我们用Selenium来抓取JavaScript渲染的页面,可见即可爬。Appium同样也可以,用Appium来做App爬虫不失为一个好的选择。

下面我们来了解Appium的基本使用方法。

一、本节目标

我们以Android平台的微信为例来演示Appium启动和操作App的方法,主要目的是了解利用Appium进行自动化测试的流程以及相关API的用法。

二、准备工作

请确保PC已经安装好Appium、Android开发环境和Python版本的Appium API。另外,Android手机安装好微信App。

三、启动App

Appium启动App的方式有两种:一种是用Appium内置的驱动器来打开App,另一种是利用Python程序实现此操作。下面我们分别进行说明。

首先打开Appium,启动界面如下图所示。
在这里插入图片描述

直接点击Start Server按钮即可启动Appium的服务,相当于开启了一个Appium服务器。我们可以通过Appium内置的驱动或Python代码向Appium的服务器发送一系列操作指令,Appium就会根据不同的指令对移动设备进行驱动,完成不同的动作。启动后运行界面如下图所示。

在这里插入图片描述

Appium运行之后正在监听4723端口。我们可以向此端口对应的服务接口发送操作指令,此页面就会显示这个过程的操作日志。

将Android手机通过数据线和运行Appium的PC相连,同时打开USB调试功能,确保PC可以连接到手机。

可以输入adb命令来测试连接情况,如下所示:

adb devices -l

如果出现类似如下结果,这就说明PC已经正确连接手机。

List of devices attached
2da42ac0 device usb:336592896X product:leo model:MI_NOTE_Pro device:leo

model是设备的名称,就是后文需要用到的deviceName变量。我使用的是小米Note顶配版,所以此处名称为MI_NOTE_Pro。

如果提示找不到adb命令,请检查Android开发环境和环境变量是否配置成功。如果可以成功调用adb命令但不显示设备信息,请检查手机和PC的连接情况。

接下来用Appium内置的驱动器打开App,点击Appium中的Start New Session按钮,如下图所示。

在这里插入图片描述

这时会出现一个配置页面,如下图所示。
在这里插入图片描述

需要配置启动App时的Desired Capabilities参数,它们分别是platformName、deviceName、appPackage、appActivity。

platformName:它是平台名称,需要区分Android或iOS,此处填写Android。

deviceName:它是设备名称,此处是手机的具体类型。

appPackage:它是App程序包名。

appActivity:它是入口Activity名,这里通常需要以 . 开头。

在当前配置页面的左下角也有配置参数的相关说明,链接是https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md。

我们在Appium中加入上面4个配置,如下图所示。

在这里插入图片描述

点击保存按钮,保存下来,我们以后可以继续使用这个配置。

点击右下角的Start Session按钮,即可启动Android手机上的微信App并进入到启动页面。同时PC上会弹出一个调试窗口,从这个窗口我们可以预览当前手机页面,并可以查看页面的源码,如下图所示。

在这里插入图片描述

点击左栏中屏幕的某个元素,如选中登录按钮,它就会高亮显示。这时中间栏就显示了当前选中的按钮对应的源代码,右栏则显示了该元素的基本信息,如元素的id、class、text等,以及可以执行的操作,如Tap、Send Keys、Clear,如下图所示。
在这里插入图片描述

点击中间栏最上方的第三个录制按钮,Appium会开始录制操作动作,这时我们在窗口中操作App的行为都会被记录下来,Recorder处可以自动生成对应语言的代码。例如,我们点击录制按钮,然后选中App中的登录按钮,点击Tap操作,即模拟了按钮点击功能,这时手机和窗口的App都会跳转到登录页面,同时中间栏会显示此动作对应的代码,如下图所示。

在这里插入图片描述

接下来选中左侧的手机号文本框,点击Send Keys,对话框就会弹出。输入手机号,点击Send Keys,即可完成文本的输入,如下图所示。
在这里插入图片描述

我们可以在此页面点击不同的动作按钮,即可实现对App的控制,同时Recorder部分也可以生成对应的Python代码。

下面我们看看使用Python代码驱动App的方法。首先需要在代码中指定一个Appium Server,而这个Server在刚才打开Appium的时候就已经开启了,是在4723端口上运行的,配置如下所示:

server = 'http://localhost:4723/wd/hub'

用字典来配置Desired Capabilities参数,代码如下所示:

desired_caps = {
   
    'platformName': 'Android',
    'deviceName': 'MI_NOTE_Pro',
    'appPackage': 'com.tencent.mm',
    'appActivity': '.ui.LauncherUI'
}

新建一个Session,这类似点击Appium内置驱动的Start Session按钮相同的功能,代码实现如下所示:

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Remote(server, desired_caps)

配置完成后运行,就可以启动微信App了。但是现在仅仅是可以启动App,还没有做任何动作。

再用代码来模拟刚才演示的两个动作:一个是点击“登录”按钮,一个是输入手机号。

看看刚才Appium内置驱动器内的Recorder录制生成的Python代码,自动生成的代码非常累赘,例如点击“登录”按钮的代码如下所示:

el1 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.wi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值