python写⾃动化测试脚本常见报错_Appium⾃动化测试
3. Appium安装配置
3.1. 限制
如果你在windows上安装appium,你没法使⽤预编译专⽤于OS X的.app⽂件,你也将不能测试IOS apps,因为appium依赖OS X专⽤的库来⽀持IOS测试。这意味着你只能通过在mac上来运⾏IOS的app测试。这点限制挺⼤。
3.2. 傻⽠式安装node.js
3.2.1. 查看是否安装成功
nodejs安装完毕后,需要配置环境变量
在PATH中添加:D:\Program Files\nodejs;
3.3. 傻⽠式安装Appium
3.3.1. 成功界⾯
3.4. 配置appium环境变量
C:\Program Files (x86)\Appium\node_modules\.bin
3.5. 打开控制台,查看appium环境
3.5.1. appium-doctor
3.6. 配置Android— 环境变量
F:\adt-bundle-windows-x86_64_20140101\sdk
3.7. Python中配置appium环境(联⽹)
进⼊:D:\python\Scripts
打开控制台:
pip install Appium-Python-client
3.8. 总结:
1) android sdk安装完毕后,需要配置环境变量
新建ANDROID_HOME
在PATH中添加:%ANDROID_HOME%:\.....
2) nodejs安装完毕后,需要配置环境变量
在PATH中添加:D:\Program Files\nodejs;
3) appium安装完毕后,需要配置环境变量怎样做好市场营销
D:\Program Files (x86)\Appium\node_modules\.bin;
4) 配置好后,启动cmd,
输⼊node -v,查看node安装版本
输⼊appium-doctor检查appium的安装环境是否成功,
5) 安装Python,配置环境变量,
4. 第⼀个脚本⽰例
4.1. ⾸先通过eclpse启动android模拟器
4.2. 启动Appium
4.3. 点击左上⾓有“机器⼈”的按钮:
选择你的android版本
4.4. 点击右上⾓的“三⾓”按钮启动Appium。
4.5. 通过Python编写⾃动化测试脚本。
desired_caps是⼀个字典,⽤于在appium server 与⼿机端建⽴会话关系时,⼿机端需要告诉服务端设备相关的⼀些参数,根据这些参数服务端可以做出相应的处理。
#coding:utf-8
from appium import webdriver
#desired_caps是⼀个字典,负责启动服务端时的参数设置,启动session的时候是必须提供的。
# Desired Capabilities本质上是key value的对象,它告诉appium server这样⼀些事情,⽐如:
# 本次测试是启动浏览器还是启动移动设备?
# 是启动andorid还是启动ios?
# 启动android时,app的package是什么?
# 启动android时,app的activity是什么
desired_caps = {}
#你要测试的⼿机操作系统
desired_caps['platformName'] = 'Android'
#⼿机操作系统的版本
desired_caps['platformVersion'] = '4.2'
#使⽤的⼿机类型或模拟器类型
desired_caps['deviceName'] = 'Android'
#deviceName你的模拟器名字,就是在下载AVD的时候,你填写的,忘了的回头去,或者在模拟器顶部会显⽰
#所运⾏的app包名
desired_caps['appPackage'] = 'com.android.calculator2'
#app运⾏的事件
desired_caps['appActivity'] = '.Calculator'
#启动打开app
driver = webdriver.Remote('127.0.0.1:4723/wd/hub', desired_caps)
#根据元素定位,执⾏点击操作
driver.find_element_by_name("6").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("9").click()金融市场包括
driver.find_element_by_name("1").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
driver.quit()
报错
解决⽅案
会话已存在错误--解决⽅案,关掉appium,重启
4.6. 画出来的这三个,是需要在脚本中正确填写的
4.7. 执⾏效果
5. Appium界⾯内容解析
5.1. 整体介绍
主页⾯顶部从左到右依次是:
1、AndroidSettings:android相关的设置
2、 GeneralSettings:全局设置,设置appium相关的内容
3、 DeveloperSettings:开发者设置,⼀般不⽤需要关⼼也许我这一生都无法走进你的生命
4、About:appium相关信息,不需要关⼼
5、Inspector:查元素⽤的,windows⽆法使⽤,MAC可以使⽤,windows可以不⽤关⼼。
6、LaunchAppium:启动appium按钮
7、右下⾓清除⽇志按钮。
5.2. Android Settings
此页⾯分为Application、Launch Device、Capabilities、Advanced四部分,先看图之后分析分别有什么作⽤5.2.1. 1、Application
本模块设置被测试app信息,如安装包路径、包名、activity等
ApplicationPath:选择要测试的apk,选择他后与全局设置中的Pre-LaunchApplication配合,启动appium时会先把apk安装到⼿机(或模拟器)再启动app。牧童骑黄牛
Package:根据apk⽣成的app包名,之前提到过的,我们这个包的⾝份证,我们需要通过这个去到包,不然我们安装后我们通过什么去辨别这些包呢?
Waitfor Package:等待包名。
LaunchActivity:启动的activity,我们可以把⼿机当做⼀个浏览器,⽽Activity就是其中的⼀个个⽹页,我们启动app时需要去运⾏的activity,这⾥我们填写⾸次启动页⾯的activity。我们选择第⼀启动的activity与aapt命令⽣成的launchable-activity:name⼀致
备注:这⾥需要注意⼀个问题在我们每次通过Choose选择apk后,appium会⾃动把这个包进⾏重新签
名,那么在package以及activity⾥⾯会⾃动把包名和activity的名称列进去,但是这⾥会出现⼀个问题,每次选择apk后列表中会有⼀个缓存的原因,即使你更改了apk,但是package还是没有变,这样启动的时候就⼀直报错,遇见这样的情况不要着急,重新启动两次就好。
Waitfor Activity:和上⾯的差不多,意思是等待某个Activity打开,⽤的时间不是很多,做了解。
UseBrowser:测试浏览器选择这项,与前五项互逆。及选择了他前五个就不可以选择。
FullReset:将所有设置复位。即将⼿机(模拟器)恢复到启动到appium前的状态
NoReset:不需要重置⼿机(模拟器)中的app
剩下的⼏项不重要。可以不需要知道作⽤。
6.2.2. Launch Device
本模块是模拟器设置,针对的是SDK创建的模拟器,不是genymotion等其他模拟器。
LaunchAVD:要启动的模拟器名称。
DeviceReady Timeout:等待模拟器启动时间。
Arguments:启动模拟器时需要的参数。
6.2.3.Capabilities
运⾏测试的相关信息。
PlatformName:测试平台,可以选择Android、FireFox OS、MAC版的还可以选择IOS。
utomationName:测试引擎的名称,我们使⽤的是appium,所以你第⼀眼就能看见Appium,但是他还有⼀个Selendroid。可能看到这⾥会有⼀些疑惑,为什么appium要选择两套系统呢?其实这个应该追溯到android的版本问题,android⾃⼰的⼯具在4.2版本以前是⼀个,但是后⾯进⾏了更新,可能也正是因为这个原因appium也才采⽤了两套,所以当你测试的app安装的机器时在4.2或之前的版本时那么这⾥的引擎你就必须选择Selendroid,
PlatformVersion:被测试⼿机(模拟器)版本。
DeviceName:设备名称,⼿机连接电脑后打开cmd输⼊adb devices可获取。
Language:被测试⼿机(模拟器)使⽤语⾔。
Locale:被测试⼿机(模拟器)所属区域。
5.2.2. Advanced
此模块不需要关⼼,这个标签只是在你想同⼀台电脑同时控制多台⼿机的时候才能使⽤,需要更改Bootstrap Port的端⼝号,记住这⼀点就好。韩国首尔胜利事件
5.3. General Setting
全局设置,分为Server和Logging两个,分别是对appium服务和输出⽇志的设置
5.3.1. 1、Server
此模块测试appium server信息
ServerAddress:如果测试机与开发机是同⼀台机器默认即可,否则写appium所在服务器IP
port:默认4723,可修改。
CheckFor Updates:启动appium时是否检测更新
Pre-LaunchApplication:与Android Settings中的Application模块的ApplicationPath配合,启动appium后会直接启动安装的app。
OverridingExisting Session:覆盖之前的session。
UseRomote Server:使⽤远程appium Server。
SeleniumGrid Configuration File:配置Selenium Grid⽂件。并发和分布式时⽤到。
5.3.2. 2、Logging
⽇志设置
ShowTimestamps:appium界⾯输出⽇志时带时间戳
Logto File:默认状态是没有任何数据,但是在做⾃动化时建议选择,因为选择之后appium在运⾏时产⽣的⽇志都会保留到你设置的问题件,这个对后期的bug定位有相当⼤的帮助。切记!
5.4. 元素侦测:
这个按钮的功能和firebug的定位⼯具功能类似,但是他还有⼀个功能,他会检测你的各个系统配置是否正确,如果前⾯各项参数不正确时,使⽤该功能会报错。如果你不正常连接⼿机也不⾏。还是建议⽤sdk⼯具⾥⾯⾃带的uiautomatorviewer。
5.5. 启动服务
所有参数配置好后你需要做的就是启动appium服务,只有启动之后你才能够做⾃动化。
5.6. 清除⽇志(右下⾓):
在写脚本、调试过程中会产⽣很多的⽇志,但是你可能想看的只是中间某个时间段的,那么你在这个时候可以将页⾯的⽇志清除。
6. Appium查看界⾯元素的⼯具
6.1. 通过android sdk的uiautomaterviewer获取元素内容
uiautomaterviewer所在⽬录:..\sdk\tools\bin
uiautomatorviewer.bat是⼀个⽤来来扫描和分析Android应⽤程序的UI组件的GUI⼯具。具体使⽤⽅法可参考。打开uiautomatorviewer 以后,可以看到uiautomatorviewer已经将模拟器的图形展⽰在上⾯了。
6.2. 右侧xml节点详解
节点名 解释
index ⽗⽬录下的第⼏个元素,以0开头
text 显⽰在界⾯上的内容
resource-id 该元素的id(开发不规范时,此id有可能会不存在或多个相同)
class 元素的类型
package apk的包名
content-desc 描述信息
毫克和克
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论