Appium+Python 之APP UI自动化入门

这篇文章主要是讲解我们的一个UI自动化的环境搭建以及入门的一个自动化测试。现在的软件更新迭代比较快,经常要做一些回归测试,那么手工测试就会显得耗时耗力,这边就介绍一个简单的UI自动化的方法,可以学习一下。

一、环境搭建
1、安装appium
(1)首先去网站下载一个appium的exe安装包。官网上的话下载比较慢,可以找资源去下载一下。
-----注:这边就是简单的一个安装方式、还有一个比较复杂的,后续我再更新。
(2)然后我们直接双击下面的exe安装包进行安装即可。Appium+Python 之APP UI自动化入门
(3)打开appium,可以看到界面如下图所示:
Appium+Python 之APP UI自动化入门
这个就是appium已经安装完成了。

2、安装安卓模拟器
这边我安装的呢是雷电模拟器,这个主要看你们自己装什么都可以,有雷电模拟器、什么逍遥模拟器等等。

3、安装PyCharm
这个可以安装一个社区版的因为是免费的不需要**。

4、准备待测的APP的安装包
打开我们的安卓模拟器,直接将安装包拖进模拟器安装。


以上就是我们的一个环境配置过程,下面讲一个简单的UI自动化实例。

1、首先我们要打开pycharm,写几个基础的脚本,这个是配置的一个脚本
Appium+Python 之APP UI自动化入门
每一行的一个配置就不多做解释了,这边都有注释,按照自己的环境进行配置即可,这边说下app的包名和activity如何查看。

方法1:如果装了andriod-sdk的话,sdk下面build-tools里有个工具aapt,通过命令可以查看到包名和activity名。
方法2:通过命令来获取
获取所有app的包名:adb shell pm list packages
获取activity名:adb shell dumpsys activity activities >d:\log.txt 这个txt文件就是会记录了你最近打开的app的activity名

把获取到的包名和activity名写到上面对应位置。

下面我们就要试一下我这个配置是否有问题,我们就要执行这段脚本,看看是否可以成功打开要测试的app,如果打开了就说明是配置正确的。

后面我们就要开始做UI自动化测试了,UI自动化测试很重要的就是要进行元素定位。我们这边用到一个工具:uiautomatorviewer,通过这个工具进行元素定位。
Appium+Python 之APP UI自动化入门
import time

from appium import webdriver

desired_caps = {
‘platformName’: ‘Android’,
‘deviceName’: ‘emulator-5554’, # Android模拟器名称
‘platformVersion’: ‘5.1.1’, # android模拟器版本
‘appPackage’: ‘com.anji.saftysupervisionapplication’, # 包名
‘appActivity’: ‘.activity.FlashActivity’ # 应用activity
}

driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’, desired_caps)

查找元素前 必须sleep等待获取元素

time.sleep(3)

用法一:通过id查找

driver.find_element_by_id(“com.anji.saftysupervisionapplication:id/et_account”).click()
driver.find_element_by_id(“com.anji.saftysupervisionapplication:id/et_account”).send_keys(“JTliqinkan”)
driver.find_element_by_id(“com.anji.saftysupervisionapplication:id/et_password”).click()
driver.find_element_by_id(“com.anji.saftysupervisionapplication:id/et_password”).send_keys(“123456”)
driver.find_element_by_id(“com.anji.saftysupervisionapplication:id/btn_login”).click()
print(“login successfully”)

查找元素前 必须sleep等待获取元素

time.sleep(3)

用法二:通过xpath查找

driver.find_element_by_xpath("//*[@text=‘快捷入口’]").click()

查找元素前 必须sleep等待获取元素

time.sleep(3)
driver.find_element_by_xpath("//*[@text=‘对象、内容、范围’]").click()
time.sleep(3)
driver.quit()

以上是我用id和xpath做的简单的一个UI自动化,可以参考学习。