Python+Appium自动化测试-编写自动化脚本

之前已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 + Python3.7 + appium1.18.0 + Android手机 + 今日头条app + Pycharm

一,连接测试手机,获取测试机及被测APP配置

具体的获取方法请参考APP自动化测试之appium连接真机启动app,配置信息如下:

python 复制代码
{
  "platformName": "Android",
  "platformVersion": "10",
  "deviceName": "PCT_AL10",
  "appPackage": "com.ss.android.article.news",
  "appActivity": ".activity.MainActivity"
}

二,编写Python脚本启动app

1,编辑器推荐大家使用PyCharm,下载pycharm社区版本,免费无需破解。

2,因为登陆需要输入账号、密码,所以这里新增了两个参数。参数unicodeKeyboard即是否启用Unicode格式输入字符串,默认值为False,设置为True则表示启用。参数resetKeyboard即使用unicodeKeyboard功能进行Unicode输入后,是否将键盘重置为原始状态,默认False。

python 复制代码
desired_caps = {
    "platformName": "Android",
    "platformVersion": "10",
    "deviceName": "PCT_AL10",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
}

3,传入desired_caps通过appium启动app,构造driver对象(即创建一个session)。

python 复制代码
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

appium在本机开启的话则IP为127.0.0.1,端口默认为4723

4,电脑连接手机,开启appium服务,运行脚本,调试是否能启动app。

python 复制代码
from appium import webdriver
 
desired_caps = {
    "platformName": "Android",
    "platformVersion": "10",
    "deviceName": "PCT_AL10",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
}
 
# 启动app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

我们会看到手机上今日头条app被打开。

三,通过appium Inspector定位元素,登陆APP

1,登陆操作步骤为:

启动今日头条app --> 点击【我知道了】--> 确定管理权限 --> 点击底部tab"未登陆" 进入未登录页面 --> 点击 "登陆" --> 点击"..." --> 选择密码登陆 --> 输入账号密码 --> 点击登陆

2,根据操作步骤,使用appium的Inspector获取登陆相关操作元素的属性

进入appium Inspector页面\](#),先点击选择元素按钮,然后在窗口左侧展示的手机页面上,点击选择需要定位的元素,窗口右侧会展示该元素的属性值。 appium Inspector获取不到的元素属性的话,还可以用Android SDK里自带的工具uiautomatorviewer获取。后面会专门介绍怎样获取元素属性,这里不详述。 ![](https://file.jishuzhan.net/article/1702229475434958850/5244e838bfa34e5d87b8b037b4ceeb74.png) 3,登陆操作脚本 ```python # -*- coding:utf-8 -*- import time from appium import webdriver desired_caps = { "platformName": "Android", "platformVersion": "10", "deviceName": "PCT_AL10", "appPackage": "com.ss.android.article.news", "appActivity": ".activity.MainActivity", "unicodeKeyboard": True, "resetKeyboard": True, } # 启动app driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 登陆操作 driver.find_element_by_id("com.ss.android.article.news:id/chj").click() # 点击【我知道了】 time.sleep(1) driver.find_element_by_id("android:id/button1").click() # 点击权限管理-确定按钮 time.sleep(1) driver.find_element_by_xpath("//android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 点击未登录 time.sleep(1) driver.find_element_by_id("com.ss.android.article.news:id/a1c").click() # 未登录页点击登录按钮 time.sleep(1) driver.find_element_by_id("com.ss.android.article.news:id/bfm").click() # 登录页点击"。。。" time.sleep(1) driver.find_element_by_xpath("//android.widget.LinearLayout[@index=4]").click() # 选择密码登录 time.sleep(1) driver.find_element_by_id("com.ss.android.article.news:id/c7").send_keys("********") # 输入账号 time.sleep(1) driver.find_element_by_id("com.ss.android.article.news:id/ch").send_keys("********") # 输入密码 time.sleep(1) driver.find_element_by_id("com.ss.android.article.news:id/a31").click() # 点击登录 time.sleep(5) ``` 我们查看手机,会发现手机正在自动做登录今日头条的app操作,且登录成功。 至此,我们通过编写一个简单的Python脚本完成了登录app的操作,如果加上断言,就是一条完整的用例。 **最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:** ### ![在这里插入图片描述](https://file.jishuzhan.net/article/1702229475434958850/fc8a3959d0ca41a5bf7858bb98c105aa.png) 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
la_vie_est_belle6 分钟前
纯Python游戏引擎 新增可视化一键打包功能
python·游戏开发·pygame·python开发·pygame studio
最贪吃的虎8 分钟前
给 Agent 接入新模型的推理模式:从配置开关到协议适配
人工智能·python·langchain
熊猫_豆豆12 分钟前
仿真模拟两颗卫星的自主交会对接过程(Python版)
开发语言·python
276695829224 分钟前
阿里图像修复验证码自动化分析
java·前端·自动化·阿里滑块·drssionpage·阿里图像修复验证码·阿里图像复原
小江的记录本29 分钟前
【MySQL】《MySQL日志面试背诵版+思维导图》(核心考点 + MySQL 8.0最新优化)
java·数据库·后端·python·sql·mysql·面试
西洼工作室29 分钟前
Python邮箱工具类封装:高效邮件发送与管理
python·全栈
子午35 分钟前
基于YOLO的水稻害虫检测系统~Python+yolov8算法+深度学习+人工智能+模型训练
人工智能·python·yolo
我命由我1234537 分钟前
Android Framework P2 - 开机启动 Zygote 进程、Zygote 的预加载机制
android·java·开发语言·python·java-ee·intellij-idea·zygote
软件测试慧姐42 分钟前
软件测试面试题总结【含答案】
软件测试·测试工具·面试
2401_850491651 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python