Pycharm中用Appium框架编写第一个自动化脚本
一.环境依赖
·Node.js
·appium
·python
·jdk
·Android SDK
·Appium-Python-Client
·Appium-doctor
二.环境搭建
提醒:安装路径如果要自定义的话尽量不要出现中文,不然很容易出现各种报错!
cmd尽量用管理员身份运行
1.Node.js
下载地址:Previous Releases | Node.jshttps://nodejs.org/en/download/releases/
(安装好后需要进行环境变量配置哦)
(如果下载最新版nodejs,也请下载最新版的appium,版本差别太大会不兼容)
如何确认环境是否搭建好可以在cmd下输入:
- npm(node package manage)是node.js安装包管理工具,类似Python中的pip工具。
- 如果显示‘npm’不是内部命令提示,则可以已管理员身份再运行cmd试试。
2.appium
可以直接在cmd中安装:
npm install -g appium
注:这种方法安装有可能很慢,甚至失败(推荐网速好的小伙伴使用)
如果对网速没有信心,我们就可以使用国内镜像来进行安装(这里我使用的是淘宝的)
npm install -g cnpm --registry=https://registry.npm.taobao.org
如看到以下信息则表示设置完成
C:\Users\HP> npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
C:\Users\HP\AppData\Roaming\npm\cnpm -> C:\Users\HP\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm
+ cnpm@5.2.0
added 764 packages in 63.767s
接下来执行以下命令对appium进行安装
#安装最新版本
cnpm install -g appium
#安装指定版本
cnpm install appium@1.7.0 -g
如果上述方法你都安装失败了我们可以使用第三种方法进行手动安装:
appium / Appium.app / Downloads — Bitbuckethttps://bitbucket.org/appium/appium.app/downloads/下载解压后运行
安装路径自己定,其他的默认就好
安装好后将其添加到系统环境变量中,之后就可以执行如下命令进行查看(查看版本可输入appium -v)
之后检查appium知否能正常运行:cmd中输入appium,他会打开appium服务端
然后点击运行
如果能正常显示信息就配置成功啦!
想要安装客户端的小伙伴可以在这里下载
Releases · appium/appium-desktop · GitHubhttps://github.com/appium/appium-desktop/releases
开启服务之前需要设置一下,设置完可以直接点击start或者保存(需要自己命名)在第三模块presets中(下次可以直接在presets中开启服务)
3.python
下载地址:
Download Python | Python.orghttps://www.python.org/downloads/目前Python有两个版本,一个是2.X,一个是3.X。这两个版本是不兼容的。我更推荐大家去下载3.X的使用,但是不建议用最新的版本,你懂的。
具体安装步骤可以看这位博主的帖子:
(12条消息) Python安装教程(2021)_Robin Smith-CSDN博客_python安装教程https://blog.csdn.net/qq_38272958/article/details/114259577
4.jdk
jdk的环境配置相信大家都不陌生这里就不多说了,如果还是有小伙伴不会可以参考这位博主:
(12条消息) JDK的下载、安装、环境配置教程(2021年,win10、win11都可)_dzg_project的博客-CSDN博客_jdk安装教程https://blog.csdn.net/dzg_project/article/details/120789952
5.sdk
为了让你的虚拟机/真机连接到电脑
需配置好jdk环境再进行安装,地址:
Download Android SDK - free - latest version (softonic.com)https://android-sdk.en.softonic.com/download安装步骤参考下面这位博主:
(12条消息) Android SDK 安装及环境配置教程_Krystal_RonghuiLi的博客-CSDN博客_android sdk路径配置https://blog.csdn.net/Krystal_RonghuiLi/article/details/109313593
6.Appium-Python-Client
这个是将你的appium与python连接起来的很重要的东东!
安装:cmd下输入
pip install Appium-Python-Client
安装完后cmd中输入python进入python命令行,接着输入from appium import webdriver,如果没有报错则表示你已经安装成功(输入后他会自动换行)
但是!只是这样的话只能说明在cmd中的python你可以正常导入appium包,而如果你想在pycharm使用的话还需要再pycharm中手动安装导入Appium-Python-Client,具体步骤如下:
1)点击设置
2)interpreter中点击添加
3)搜索Appium-Python-Client点击安装
之后在pycharm里面import webdriver 就不会找不到包啦,看
7.appium-doctor
用来检查你的appium是否出现问题,用管理员身份运行cmd输入命令 :
npm install appium-doctor -g
如果出现以下
则说明安装成功
之后输入appium-doctor如果像我这样上面的有几个绿色框框则表示你的appium已经没啥大问题了(本来应该是绿色勾勾的不知道我的为啥是框框,不过没关系。下面那几个报警告的黄色部分是因为我那些插件没有安装,但是我们现在并不需要他们所以不用管他)
三.开始编写脚本
所有准备就绪!
首先要先了解一下appium中常用的Capability配置:
Desired capability的功能是配置Appium会话。他们告诉Appium服务器您想要自动化的平台和 应用程序。并通知Appium服务器建立需要的Session。
而Capability又被分为三个部分,分别是公共部分、ios部分和android部分,主要的区别就在于ios部分与android部分是不互通的。
公用:(我们只需要记住常用的红色部分就行)
键 | 描述 | 值 |
automationName
|
自动化测试的引擎 |
Appium (默认)或者 Selendroid
|
platformName
|
使用的手机操作系统 |
iOS , Android , 或者 FirefoxOS
|
platformVersion
|
手机操作系统的版本 |
例如 7.1 , 4.4
|
deviceName
|
使用的手机或模拟器类型 |
iPhone Simulator , iPad Simulator , iPhone Retina 4-inch , Android Emulator , Galaxy S4 , 等等.... 在 iOS 上,使用 Instruments 的 instruments -s devices 命令可返回一个有效的设备的列表。在 Andorid 上虽然这个参数目前已被忽略,但仍然需要添加上该参数
|
app
|
本地绝对路径_或_远程 http URL 所指向的一个安装包(.ipa ,.apk ,或 .zip 文件)。请注意,如果您指定了 appPackage 和 appActivity 参数 则不需要此参数了。该参数也与 browserName 不兼容。
|
/abs/path/to/my.apk 或 http://myapp.com/app.ipa
|
browserName
|
做自动化时使用的浏览器名字。如果是一个应用则只需填写个空的字符串 | 'Safari' 对应 iOS,'Chrome', 'Chromium', 或 'Browser' 则对应 Android |
newCommandTimeout
|
用于客户端在退出或者结束 session 之前,Appium 等待客户端发送一条新命令所花费的时间(秒为单位) |
例如 60
|
language
|
(Sim/Emu-only) 为模拟器设置语言 |
例如 fr
|
locale
|
(Sim/Emu-only) 为模拟器设置所在区域 |
例如 fr_CA
|
udid
|
连接真机的唯一设备号 |
例如 1ae203187fc012g
|
orientation
|
(Sim/Emu-only) 模拟器当前的方向 |
竖屏 或 横屏
|
autoWebview
|
直接转换到 Webview 上下文(context)。默认值为 false
|
true , false
|
noReset
|
在当前 session 下不会重置应用的状态。默认值为 false
|
true , false
|
fullReset |
(iOS)删除所有的模拟器文件夹。(Android) 要清除 app 里的数据,请将应用卸载才能达到重置应用的效果。在 Android, 在 session 完成之后也会将应用卸载掉。默认值为 false
|
true , false
|
Android常用:
键 | 描述 | 值 |
appActivity
|
Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivity )
|
MainActivity , .Settings
|
appPackage
|
运行的 Android 应用的包名 |
com.example.android.myApp , com.android.settings
|
appWaitActivity
|
用于等待启动的 Android Activity 名称 |
SplashActivity
|
appWaitPackage
|
用于等待启动的 Android 应用的包 |
com.example.android.myApp , com.android.settings
|
appWaitDuration
|
用于等待 appWaitActivity 启动的超时时间(以毫秒为单位)(默认值为 20000 )
|
30000
|
deviceReadyTimeout
|
用于等待模拟器或真机准备就绪的超时时间 |
5
|
androidInstallTimeout
|
用于等待在设备中安装 apk 所花费的时间(以毫秒为单位)。默认值为 90000
|
例如 90000
|
adbPort
|
用来连接 ADB 服务器的端口(默认值为 5037 )
|
5037
|
ISO常用:
键 | 描述 | 值 |
bundleId
|
被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。
|
例如 io.appium.TestApp
|
udid
|
连接的真实设备的唯一设备编号 (Unique device identifier) |
例如 1ae203187fc012g
|
launchTimeout
|
以毫秒为单位,在 Appium 运行失败之前设置一个等待 instruments 的时间 |
例如 20000
|
如果想了解更多,可以去appium官网上面查看学习:
预期功能 - Appiumhttp://appium.io/docs/cn/writing-running-appium/caps/#android
了解了配置部分,我们就可以正式开始编写我们的第一个APP自动化脚本了!这里我用安卓模拟器代替真机
下面编写一个安装软件并将其打开的脚本:
1.cmd中查看是否与手机连接上以及手机序列号
C:\Users\HP>adb devices
List of devices attached
127.0.0.1:62001 device
2.开启appium服务(这里我使用客户端启动的服务)
3.pycharm中创建python文件
4.pycharm导入appium中的webdriver
from appium import webdriver
5.写入执行代码
1|desired_caps = {} #定义一个字典,存储Capability相关信息
2|desired_caps['platformName'] = 'Android' #定义设备平台名称
3|desired_caps['platformVersion'] = '5.1.1' #定义设备版本号
4|desired_caps['deviceName'] = '127.0.0.1:62001' #定义设备名称
5|desired_caps['app'] = r'G:\appTesting\kaoyan.apk' #获取apk包
6|desired_caps['appPackage'] = 'com.tal.kaoyan' #定义包名
7|desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity' #定义activity
8|driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #调用appium服务并传参
为了方便理解我就分步骤来写了
第2行指定你是安卓机还是苹果机
第3行指定你的手机版本(在手机的设置里面可以找到,每个手机位置都有出入)
第4行是指定你的手机序列号(我这里用的是虚拟机,真机的序列号一般都是一串字母加数字的组合,可以在手机的设置中找到,也可以在pc连接上手机后cmd中输入adb devices查看)
第5行是指你的安装包存放路径,注意要在路径前加上r,这是为了读取目标文件。
第6行是为了指定包名(这个包名不是安装包的名!)可以先手动将软件安装进手机,然后cmd中输入adb shell pm list package查看已安装软件的包名
C:\Users\HP>adb shell pm list package
找到你需要安装的包名(有点费眼睛~)
我找到了!
还有两种操作复杂查看简单的方法是用sdk中自带的uiautomatorviewer或者appium中的检查者功能进行查看,这个小伙伴们可以自己去网上搜教程,这里就不演示了
第7行是定义activity名的,这个activity名又和包名不同了,查看办法为cmd中输入aapt dump badging 你的apk放的绝对路径 (这种方法也可以查看包名!)
C:\Users\HP>aapt dump badging G:\appTesting\kaoyan.apk
package: name='com.tal.kaoyan' versionCode='55' versionName='3.1.0' platformBuildVersionName='N'
sdkVersion:'10'
targetSdkVersion:'21'
。。。。。。。。。
launchable-activity: name='com.tal.kaoyan.ui.activity.SplashActivity' label='' icon=''
这个输出的东西很多,找到下面的launchable-activity这里,name属性里就是我们需要的activity名了!
第8行是为了调用appium服务,'http://localhost:4723/wd/hub'里localhost指的是本机,也可以改为127.0.0.1,4723是appium默认的端口号,这个也是可以改的,启动appium服务时在这里可以改为没有被占用的端口号,还记得这个步骤吗
wd:可以理解是WebDriver的缩写,hub:是指主节点、中心节点,这两个不能省略!
当工作区没有报错时就可以执行代码啦!
执行和服务器端也没问题! 执行过程中不要操作手机,你可以看见他自动在安装并打开你指定的软件
当理解了每个步骤后可以将1-7布合并成一个步骤:
desired_caps = {'platformName': 'Android', 'platformVersion': '5.1.1', 'deviceName': '127.0.0.1:62001', 'app': r'','appPackage': 'com.tal.kaoyan', 'appActivity': 'com.tal.kaoyan.ui.activity.SplashActivity'}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
你学废了吗?
Pycharm中用Appium框架编写第一个自动化脚本相关推荐
- appnium+python+夜神模拟器编写第一个自动化脚本
1>前言 之前已经搭好了appnium和安卓环境,本章介绍下基于模拟器实现自动化测试,会引入3个知识:1.安卓模拟器的对接这套自动化环境的相关配置:2.利用安卓工具uiautomatorview ...
- 2.4 编写第一个自动化脚本
编写一个简单的自动化脚本 1 #coding=utf-8 2 from Selenium import webdriver 3 driver = webdriver.Firefox() 4 drive ...
- Selenium 编写第一个自动化脚本
代码块: package com.chenhuai.test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; ...
- 【移动测试ios】编写和运行自动化脚本
[移动测试iOS]编写和运行自动化脚本 准备工作 编写和运行自动化脚本 准备工作 1.使用Xcode打开要运行的程序 2.选择将要运行的程序和模拟器设备 3.command+r运行 4.打开并启动ap ...
- python_selenium之第一个自动化脚本
python_selenium之第一个自动化脚本 上一节介绍了xpath的使用,接下来完成第一个自动化脚本 一.步骤: 1. 这里使用火狐浏览器,首先打开火狐浏览器 2. 使浏览器窗口最大化 3.输入 ...
- Python+selenium第一个自动化脚本
第一个自动化脚本(用Python写的) from selenium import webdriver #从selenium导入webdriber driver=webdriber.Firefox() ...
- android自动实例化的网站,Appium安卓自动化从入门到入土踩坑实践(五)第一个自动化脚本...
说明:用驾考宝典来进行实战,此处用java语言进行脚本编写 1.添加配置 ①在新建的AppiumTest类中添加一个main方法,创建配置对象 ②实例化一个类 ③添加配置(也就是appium与设备连接 ...
- Pocsuite3渗透测试框架编写POC和EXP脚本
在我们的日常渗透测试中,经常挖掘到一些漏洞,但是我们一般使用挖掘工具或者手工判断的时候,不好确定是不是真的存在这么一个漏洞,因此POC脚本就应运而生了.POC全称是Proof of Concept,中 ...
- 微信的新消息一键标为已读.简单的微信脚本,使用autojs编写的安卓自动化脚本
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
最新文章
- 包含绑定变量的sql进行调优需注意一点
- plsql 记录型变量
- 【前端统计图】echarts实现单条折线图
- radio选中事件怎么绑定_Vue双向绑定
- APP测试之Monkey压力测试(一)
- 不染计算机演奏教程,全国计算机等级考试一级教程-第1章 计算机基础知识 .pdf...
- 在线图片坐标拾取工具
- 某大型银行深化系统技术方案之十七:技术架构
- 无连续重复的随机算法
- iOS OpenGL ES2.0教程 Lesson03 旋转
- Nginx服务器中的Socket切分,需要的朋友可以参考下
- c语言字符是源码,C语言基础字符串函数源代码
- java 发送邮件(带附件)
- 失态的三星正在把华为手机送上全球第一宝座
- kodi资源_Kodi——支持全平台的看片神器
- 解决阿里云ECS服务器下载 git 资源慢的问题
- Android手机下载的缓存视频如何找到?
- Kali使用中文输入法
- Win11-GTX3060-配置Pytorch GPU
- eclipes error