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
二、实战
- 开启模拟器(我的是直接用的Android Studio的模拟器,所以在开启模拟器之前我还要开启Android Studio)
- 打开appium服务器
- 打开pycharm
- 打开cmd
- 打开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欢迎关注这个超级无敌可爱的人鸭,有什么问题留言私信皆可,看见必回!
创作不易,如有转载,请注明出处