欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Appium基础

Appium基础

2024/10/25 18:34:17 来源:https://blog.csdn.net/zxcvbnm_1206/article/details/140950899  浏览:    关键词:Appium基础

Appium介绍

Appium是一个移动端的自动化框架,可用于测试原生应用、移动网页应用和混合型应用,且是跨平台的。

重要的是Appium是跨平台的,即可以针对不同的平台用一套api来编写测试脚本。

Appium自动化测试环境搭建

Appium客户端+Appium-python库

它们之间的关系:python代码 -> Appium-python库 -> Appium -> 手机

客户端安装

Appium官网

github下载地址

Appium-python库安装

命令行安装(需要联网)

pip3 install Appium-Python-Client

Appium参数详解

  • 前置代码
# 导模块
from appium import webdriver# 创建一个字典,包装相应的启动参数
desired_caps =dict()
# 需要连接的手机的平台(不限制大小写)
desired_caps['platformName']='Android'
# 需要连接的手机的版本(如 5.2.1 的版本可以写 5.2.1 或 5.2 或 5, 以此类推)
desired_caps['platformversion']='5.1'
# 需要连接的手机的设备号(andoird平台下, 可以随便写, 但是不能不写)
desired_caps['deviceName']='192.168.56.101:5555'
# 需要启动的程序的包名
desired_caps['appPackage']='com.android.settings'
# 需要启动的程序的界面名
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 退出
driver.quit()
  • 如何使用appium打开任意一个应用程序
    • 打开要测试的应用
    • 使用 adb 命令获取包名和界面名
    • 修改 desired_caps 字典中的 addPackage 和 addActivity 的参数
  • 启动过程【了解】
    • 写的python代码会访问本机的安排appium服务器,并获取driver对象
    • appium会将我们的driver对象调用的方法转化成post请求,提交给appium服务器
    • appium通过接收到的post请求发送给手机,再由手机进行执行

基础操作API

1. 跳转其他app

  • 应用场景
    • 如果一个应用需要跳转到另一个应用,就可以用这个api进行应用的跳转
  • 方法名和参数
    • driver.start_activity(addPackage, addActivity)
  • 示例
from appium import webdriver
import time# 手机参数
desired_caps =dict()
desired_caps['platformName']='Android'
desired_caps['platformversion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
# 应用参数
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 等待三秒
time.sleep(3)# 启动短信应用程序
driver.start_activity("com.android.mms", ".ui.ConversationList")
time.sleep(20)# 退出
driver.quit()

2. 获取app的包名和界面名

  • 应用场景
    • 当从一个应用跳转到另一个应用时,如果想输出包名、界面名或者想在报告中展现对应信息,就可以调用这个属性来获取
  • 属性名
    • driver.current_package  # 获取包名
    • driver.current_activity  # 获取界面名
  • 示例
from appium import webdriver
import time# 手机参数
desired_caps =dict()
desired_caps['platformName']='Android'
desired_caps['platformversion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
# 应用参数
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 等待三秒
time.sleep(3)# 输出当前程序的包名和界面名
print(driver.current_package)
print(driver.current_activity)time.sleep(20)# 退出
driver.quit()

3. 关闭app和驱动对象

  • 应用场景
    • 用于关闭应用程序
  • 方法名
    • driver.close_app()  # 关闭当前操作的app,不会关闭驱动对象
    • driver.quit()  # 关闭驱动对象,同时关闭所有关联的app
  • 示例
from appium import webdriver
import time# 手机参数
desired_caps =dict()
desired_caps['platformName']='Android'
desired_caps['platformversion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
# 应用参数
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 等待三秒
time.sleep(3)# 关闭当前应用程序
driver.close_app()
# 退出
driver.quit()

4. 安装和卸载以及是否安装app

  • 应用场景
    • 一些应用市场的软件可能会有一个按钮,如果某一个程序已经安装则卸载,如果没有安装则安装
  • 方法名
    • driver.install_app(app_path)  # app_path:apk路径
    • driver.remove_app(app_id)  # app_id:应用程序包名
    • driver.is_app_installed(app_id)  # 返回值为bool类型,True为安装,False为没有安装
  • 示例
from appium import webdriver
import time# 手机参数
desired_caps =dict()
desired_caps['platformName']='Android'
desired_caps['platformversion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
# 应用参数
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 判断 安智市场 是否已经安装
# 如果安装,就要卸载
if driver.is_app_installed("cn.goapk.market"):driver.remove_app("cn.goapk.market")
else:  # 如果未安装,则安装driver.install_app("/Users/Yoson/Desktop/anzhishichang.apk")# 退出driver
driver.quit()

5. 将应用置于后台

  • 应用场景
    • 银行类app会在进入后台一定时间后,如果再回到前台页面会重新输入密码,如果需要自动化测试这种功能,可以使用这个api进行测试
  • 方法
    • driver.background_app(seconds)
  • 示例
from appium import webdriver
import time# 手机参数
desired_caps =dict()
desired_caps['platformName']='Android'
desired_caps['platformversion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
# 应用参数
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)time.sleep(3)
driver.background_app(5) # 进入后台5s,再回到前台
time.sleep(3)# 退出driver
driver.quit()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com