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

Appium+Python

  • 一、前提
    • 1.1 JDK安装及其配置环境变量
    • 1.2 Android-SDK 安装
    • 1.3 Node.js 安装
    • 1.4 Appium 客户端安装
    • 1.5 python安装及其配置环境变量
    • 1.6 pycharm安装
    • 1.7 安装python库Appium-Python-Client
  • 二、实战
    • 2.1点击某个事件
    • 2.2点击某组元素的某个事件
    • 2.3一组定位方式补充
    • 2.4一个定位方式补充

一、前提

1.1 JDK安装及其配置环境变量

下载安装配置也就是基本的(应该都会)

测试是否配置好 ,在cmd下输入(下同)

java -version

1.2 Android-SDK 安装

这个直接在Android Studio里面就有

测试是否配置好

adb --version

1.3 Node.js 安装

node.js官网下载:https://nodejs.org/en/
测试,进入node.js的安装路径,输入

node --version

1.4 Appium 客户端安装

除了以上 jdk 和 Android-sdk 环境,我们使用 Appium 和 python 来进行自动化测试,还 需要安装两个东西,一个是Appium 的客户端,一个是 Appium-python 库。这两个需要安装的东西在加上手机就可以进行自动化测试,它们之间的关系是:python 代码>Appium-python 库>Appium->手机。

appium-desktop 下载地址:https://github.com/appium/appium-desktop/releases
(这个软件有点大,我上传了一个到百度网盘里面
链接:https://pan.baidu.com/s/1WlaYoifeRGIF1Yc02deScQ
提取码:wp4l )

下载下来之后右键管理员身份打开,打开之后选择为使用这台电脑的任何人安装(所有用户),安装之后的默认路径是C:\Program Files\Appium

记得配置环境变量,如下

默认Host和Port,在python中写好代码要运行之前就点击Start Server v1.18.0

1.5 python安装及其配置环境变量

测试是否配置好

python

1.6 pycharm安装

官网:https://www.jetbrains.com/pycharm/download/#section=windows
下载一个社区版就可以了哈哈哈

1.7 安装python库Appium-Python-Client

打开cmd,输入

pip install Appium-Python-Client

二、实战

  1. 开启模拟器(我的是直接用的Android Studio的模拟器,所以在开启模拟器之前我还要开启Android Studio)
  2. 打开appium服务器
  3. 打开pycharm
  4. 打开cmd
  5. 打开uiautomatorviewer(在SDK目录下)

2.1点击某个事件

打开pycharm,新建一个py文件,输入代码

from appium import webdriver
import time
desired_caps=dict()
desired_caps['platformName']='Android'#平台的名字,不区分大小写,“Android”;“ios”
desired_caps['platformVersion']='5.0'#平台的版本,可以不写后续版本号
desired_caps['deviceName']='emulator-5554'#设备的名字,不能为空
desired_caps['appPackage']='com.google.android.apps.messaging' #要打开的应用程序包名
desired_caps['appActivity']='.ui.ConversationListActivity'#要打开的应用程序的界面名
desired_caps['udid']='emulator-5554'#连接设备的唯一标识
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#连接 appium 服务器driver.start_activity("com.google.android.apps.messaging", ".ui.ConversationListActivity") #包名(前面是包名,后面是界面名)
driver.find_element_by_id("com.google.android.apps.messaging:id/start_new_conversation_button").click() #点击事件
time.sleep(3)
driver.quit()

注意:(运行前提是你的Android Studio中的模拟器开启了、appium服务器也开启了)
第六行设备名字查询:cmd 之后输入

adb devices


第7行、第8行:要打开的应用程序包名、要打开的应用程序的界面名

找到你想要测试的程序,事先在模拟器中打开这个程序

cmd下输入

adb shell dumpsys window | findstr mCurrentFocus

回车之后就可以看到你想测试的程序的包名和界面名(界面名可以省略包名,但是.点不可以省略)

如何查找点击事件的特定id???(第13行)

cmd打开uiautomatorviewer

如果没有添加到环境变量的话就去sdk目录下找到uiautomatorviewer.bat
在Android Studio中第一行找到file——>Settings

点击模拟器,在uiautomatorviewer找到resource-id,这个id是每个点击事件特有的。

点击1,在点击你想要操作的事件2,就可以看到id了

运行python代码之后模拟器就会自动开启这个程序啦!

2.2点击某组元素的某个事件

这个其实是通过索引来的

见代码

from appium import webdriver
import time
desired_caps=dict()
desired_caps['platformName']='Android'#平台的名字,不区分大小写,“Android”;“ios”
desired_caps['platformVersion']='5.0'#平台的版本,可以不写后续版本号
desired_caps['deviceName']='emulator-5554'#设备的名字,不能为空
# desired_caps['appPackage']='com.google.android.apps.messaging' #要打开的应用程序包名
# desired_caps['appActivity']='.ui.ConversationListActivity'#要打开的应用程序的界面名
desired_caps['udid']='emulator-5554'#连接设备的唯一标识
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#连接 appium 服务器# driver.start_activity("com.google.android.apps.messaging", ".ui.ConversationListActivity") #包名(前面是包名,后面是界面名)
# driver.find_element_by_id("com.google.android.apps.messaging:id/start_new_conversation_button").click() #点击事件
# time.sleep(3)
# driver.quit()#如何定位一组元素,比如说我要打开设置的第三个选项
driver.start_activity("com.android.settings",".Settings") #包名(前面是包名,后面是界面名)
A=driver.find_elements_by_class_name("android.widget.LinearLayout")  #类名(记住类名要一样,自己试试)
A[6].click()
time.sleep(5)
driver.quit()

里面的class_name也是通过uiautomatorviewer去看的,比如我我要打开Connected devices这个选项,它的索引为6(第21行代码),就会自动打开了

https://blog.csdn.net/hanhanwanghaha一个超级无敌可爱的人鸭 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)

2.3一组定位方式补充

通过class_name(类名)定位一组元素

find_elements_by_class_name("class_name")

通过id定位一组元素

driver.find_elements_by_id("id_name")

通过xpath定位一组元素

driver.find_elements_by_xpath("xpath_name")

2.4一个定位方式补充

其实这个也就是一组的方式中的elements少个s

通过class_name(类名)定位一个元素

find_element_by_class_name("class_name")

通过id定位一个元素

driver.find_element_by_id("id_name")

通过xpath定位一个元素

driver.find_element_by_xpath("xpath_name")


这是我移动端的自动化测试,我记得以前还发了一个PC端的自动化测试 点击此处

https://blog.csdn.net/hanhanwanghaha欢迎关注这个超级无敌可爱的人鸭,有什么问题留言私信皆可,看见必回!
创作不易,如有转载,请注明出处

Appium+Python移动端(Android)自动化测试环境搭建原来没有那么难!+ 带你实战去相关推荐

  1. Appium+python自动化(一)- 环境搭建—上(超详解)

    简介 最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声.即将要开启新的征程和篇章(Appium&python).那么首相的问题就是搭建环境了.好久没搭建环境又踩了不少坑 ...

  2. python 苹果试玩_(appium+python)UI自动化_01_自动化环境搭建【MAC版】

    Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...

  3. Appium appium+python+jenkins 一套自动化测试框架搭建

    转载:https://testerhome.com/topics/9879 本篇主要讲: appium框架的搭建与真机环境配置 安装 brew install node 想要生效首先必须先安装home ...

  4. python+selenium安装,自动化测试环境搭建

    1.安装python(注:安装过程中勾选配置环境选项) 2.检查python是否安装成功 3.通过pip命令安装selenium pip install selunium 4.检查selenium是否 ...

  5. Linux下Appium+Python+headless移动APP自动化测试实战

    Linux下Appium+Python+Headless移动APP自动化测试实战 文章目录 Linux下Appium+Python+Headless移动APP自动化测试实战 1. 环境准备 1.1 安 ...

  6. iOS自动化测试环境搭建

    1 环境准备 1.1 Mac os x 1.2 brew Mac os x的包管理工具,安装方法:终端输入: /usr/bin/ruby -e "$(curl -fsSL https://r ...

  7. 最新出炉--IOS自动化测试环境搭建(Python Java)

    一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.Appium ...

  8. 全网最全appium工作原理以及appium自动化测试环境搭建教程

    目录:导读 一.前言 二.Appium简介 三.搭建Appium+Python自动化测试环境 1.安装JDK并配置JDK的环境变量. 2.安装SDK并配置SDK的环境变量. 3.安装夜神模拟器并在模拟 ...

  9. Appium+Python移动端 实战——教你如何xpath定位自动化测试

    今日份问题 我:手动就可以操作简单的测试,为什么要自动化测试 老师:主要是回归测试.改了bug之后,重新再来测试.这样用回归测试就比手动测试要节约成本 Appium+Python移动端实战 一.前提 ...

最新文章

  1. 皮猜按下谷歌招聘暂停键,疫情之下,「紧日子」来了
  2. 水晶报表位置公式_高频、实用函数公式,提升您的工作效率!
  3. 《转载》Python并发编程之线程池/进程池--concurrent.futures模块
  4. 坐标偏差大_控制点的坐标复核(二)
  5. android studio设置内存
  6. 虚拟机(VMware Workstation)中,把连接网络的模式由“NAT模式”,改成“自动桥接模式”,网速大大的提升...
  7. (十九)【AAAI2021】Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommend
  8. c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式
  9. 如何系统学习python
  10. 你的实力就等于别人对待你的态度
  11. bzoj1217: [HNOI2003]消防局的设立 [树形dp]
  12. java 栈队列区别是什么意思_java栈和队列的区别
  13. java 多线程操作List,已经做了同步synchronized,还会有ConcurrentModificationException,知道为什么吗?...
  14. SQL0286N 找不到页大小至少为 8192、许可使用授权标识 db2inst 的缺省表空间。...
  15. OTN技术及华为OTN设备简介
  16. uni.navigateTo失效
  17. 2.Java再识:使用MyEclipse开发java程序
  18. macbook双系统怎么装mysql_mac装win10双系统的方法_如何安装macos苹果和win10双系统...
  19. win10退出安全模式后,没有网络
  20. AR502H-CN开发笔记18:快速建立开发环境

热门文章

  1. axios vue 动态date_Web前端Vue系列之-Vue.js 实战
  2. Vue 监视属性 watch
  3. 函数的结束条件和返回值 — return
  4. mysql 5.6.21不能选择安装路径_mysql5.6.21服务器安装图解(选择安装和数据目录)
  5. arduino串口输入改变模式模块
  6. 算法竞赛入门经典 第五章总结1
  7. linux系统运行pbs出现ntf,Linux系统启动故障修复
  8. java socket调用接口_java调用websocket接口
  9. hadoop没有datanode_Hadoop运行在Kubernetes平台实践
  10. md5加密解密代码_Python内置方法实现基于秘钥的信息加解密