apiumpython自动化测试框架架怎么设计

appium手机自动化测试_TesterHome公开版_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
appium手机自动化测试_TesterHome公开版
上传于||文档简介
&&介​绍​业​界​流​行​的​a​p​p​i​u​m​测​试​框​架​.​.​ ​
​
​介​绍​业​界​的​移​动​测​试​框​架​对​比
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩52页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1460人阅读
Appium(27)
测试自动化(39)
上一篇安装文档描述了在Appium环境配置时介绍了Maven的安装和配置,而事实上Maven对于使用Appium来说并不是必须的,它只是方便我们管理整个Java测试项目而已。
在此之前并没有用过Maven,百度百科给出的定义如下:
Maven是基于项目对象模型(),可以通过一小段描述信息来管理项目的构建,报告和文档的软件。
Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant
build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。
在初步使用的过程中Maven给我最大的印象是帮助我们很方便的解决了包依赖的问题,其办法是通过设置Maven的项目配置文件pom.xml实现的。实例如下:
&project xmlns=&http://maven.apache.org/POM/4.0.0& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&&/groupId&
&artifactId&AppiumDemo&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&packaging&jar&/packaging&
&name&AppiumDemo&/name&
&url&http://maven.apache.org&/url&
&properties&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&/properties&
&dependencies&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&4.11&/version&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&org.hamcrest&/groupId&
&artifactId&hamcrest-all&/artifactId&
&version&1.3&/version&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&io.appium&/groupId&
&artifactId&java-client&/artifactId&
&version&LATEST&/version&
&scope&test&/scope&
&/dependency&
&/dependencies&
&/project&
当我们往该文件上面添加一个dependency的session,然后ctrl+s保存的时候,Maven就会自动帮我们把需要的Jar包和对应的依赖包下载配置好。下载的位置就是安装文档里面配置的Maven的Repository路径。
以上面pom.xml的hamcrest为例子,添加该session后,maven就会自动帮我们准备好相应的jar包,不需要我们手动去查找和安装,所以这一点是非常方便,也是用maven给我印象最深刻的一个地方。
这些包Maven安装好后我们就可以直接在代码中引用了,不需要特别的配置。
最后提醒我们需要使用appium进行测试自动化,可千万要记得把appium对应的客户端给安装上,如使用的是java客户端,那么我们就记得在pom.xml里面添加以下的dependency就好了,切记切记:
&dependency&
&groupId&io.appium&/groupId&
&artifactId&java-client&/artifactId&
&version&LATEST&/version&
&scope&test&/scope&
&/dependency&
Note:dependency里面各个选项的意思:
groupId,artifactId和version这个三组合标示依赖的具体工程,而且这个依赖工程必须是maven中心包管理范围内的。如果碰上非开源包,maven支持不了这个包,那么则有三种方法处理:
1.本地安装这个插件install plugin例如:
mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -DartifactId=non-maven-proj -Dversion=1
2.创建自己的Repositories并且部署这个包,使用类似上面的deploy:deploy-file&命令3.设置scope为system,并且指定系统路径
dependency里面的classifier,用于区分从同一个pom编译出来的但是内容不同的同名包,例如同一个工程编译出两个artifact,一个支持jdk1.5一个支持jdk1.4,那么就可以使用这个来命名为jdk15和jdk14来区分,它如果出现在包名中,那么它必须跟在版本号后。还有一种情况是将一个工程的一些次要artifact附到主要artifact中,就可以使用这个来区分,例如一个工程产生source,javadoc,class三种东西,那么就可以使用不同的classifier来分别标识这些东西&
dependency里面的type,默认为jar,类型,常用如:jar,ejb-client,test-jar,可以设置plugins中的extensions值为true后在增加新类型
dependency里面的scope,指定classpath,可以为:compile(默认的,compile scope在所有classpaths内有效,这些dependencies将会传播到项目中。provided:指示jdk或者某个容器可以提供他,它只在compilation和test的classpaths有效,而且不会传播的。runtime:指示这个dependency在编译过程是不必要的,但是执行需要,在test和runtime的classpaths有效,在compile的classpaths无效。test:指示这个dependency在一般程序运行是无效的,但是在test的compilation和execution是有效的,system则跟provided类似,但是这种dependency必须人工明确地制定。这种依赖不会在repository中查找。
dependency里面的systemPath:只在dependency的scope声明为system的时候才有用除,否则,build的过程将会失败。路径必须是绝对的,所以最好使用property来声明机器的特定路径。
dependency里面的optional:如果工程本身是一个dependency那么就标记为optional,例如X需要A,A需要B,那么X只需要optional的B,则B在X中就是optional声明的了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:487344次
积分:8381
积分:8381
排名:第1580名
原创:150篇
转载:27篇
译文:194篇
评论:157条
文章:17篇
阅读:15942
文章:44篇
阅读:37679
文章:202篇
阅读:168984
阅读:26188
文章:10篇
阅读:44328
文章:10篇
阅读:45348
文章:21篇
阅读:53961
文章:35篇
阅读:133858
(2)(1)(34)(6)(10)(11)(17)(10)(28)(8)(15)(73)(41)(18)(2)(8)(42)(36)(6)(4)2089人阅读
测试(41)
Java(46)
Appium是一个开源的,适用于原生或混合移动应用应用( hybrid mobile apps)的自动化测试平台,可以非常快捷的为iOS和Android移动平台创建功能自动化测试用例。相比其他的移动自动化测试工具,Appium测试由于调用了Selenium的client库使其可以使用任意的语言,包括Python、Ruby、Node.js,Objective,java等。
官方地址:
1 系统需求
Mac OSX 10.7+&
XCode 4.5+ w/ Command Line Tools
Mac OSX 10.7+ or Windows 7+ or Linux
Android SDK ≥ 16 (SDK & 16 in Selendroid mode)
2 Appium的底层
iOS: Apple's UIAutomation&
Android 4.2+: Google's UiAutomator&
Android 2.3+: Google's Instrumentation
3 android真机运行
import java.net.MalformedURLE
import java.net.URL;
import org.junit.A
import org.junit.B
import org.openqa.selenium.remote.CapabilityT
import org.openqa.selenium.remote.DesiredC
import com.tmall.app.search.monkey.page.TMGuideActivityP
import io.appium.java_client.AppiumD
public class BaseTest {
protected AppiumD
//打开app,进行一些初始化工作。如进入目标页面等...
public void setUp() throws Exception {
setUpDriver();
//TMGuideActivityPage page = new TMGuideActivityPage(driver);
//if(page.isReady()){
page.splash();
public void tearDown() throws Exception {
driver.quit();
//启动appium Driver
public void setUpDriver() throws MalformedURLException{
final File appDir = new File(&D:\\TMApp&);
final File app = new File(appDir, &.apk&);
final DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, &&);
capabilities.setCapability(&deviceName&, &Android&);
capabilities.setCapability(&platformVersion&, &4.3&);
capabilities.setCapability(&platformName&, &Android&);
capabilities.setCapability(&app&, app.getAbsolutePath());
capabilities.setCapability(&appPackage&, &com.tmall.wireless&);
capabilities.setCapability(&appActivity&,//&.module.main.TMMainTabActivity&);
&.module.launchalert.TMLaunchAlertActivity&);
capabilities.setCapability(&appWaitActivity&, &.module.main.TMMainTabActivity&);
capabilities.setCapability(&newCommandTimeout&,120);
driver = new AppiumDriver(new URL(&http://127.0.0.1:4723/wd/hub&),
capabilities);
public class DetailTest extends BaseTest{
public void MyDetailTest() {
Search s = new Search();
s.doAction(driver);
//assert(xxxxx);
4 参数设置
DesiredCapabilities 负责启动服务端时的参数设置。实际使用时根据自己的需要,可自行修改一些参数。
比如,应用程序在查找某个页面的元素时,定位可能会时间超长。默认的命令间隔时间是60s,如果在60s内没有找到,就会自动退出。可以使用newCommandTimeout设置为更大的数值。
capabilities.setCapability(&newCommandTimeout&,240);
比如,最开始使用appium时,设置了上面的安装apk的路径,结果安装后调试程序发现接口无返回数据。后来定位问题是因为安装时进行了重签名。程序的保护机制让数据无返回了。可以使用noSign设置来避免重签名。
capabilities.setCapability(&noSign&,&true&);
当然,后来发现不在程序里写文件路径,而是提前安装好测试包,这样就避免了每次都要重新安装。
完整的Server参数
**Server capabilities**
Capability
Appium 、Selendroid
platformName
平台的名称:iOS, Android, or FirefoxOS
platformVersion
移动设备的系统版本号,7.1, 4.4
deviceName
IOS:instruments -s devices,Android:随便写
安装文件路径:/abs/path/to/my.apk or /app.ipa
browserName
测试的web浏览器,如果是测app则忽略
newCommandTimeout
等待新命令的最长时间,超时后退出。默认是60s
autoLaunch
是否自动安装和启动,默认true
模拟器的语言设置
模拟器的地区设置
orientation
模拟器的横竖屏设置
autoWebview
Move directly into Webview context
在当前session前不重置app状态
ios删除文件夹,Android删除app数据。
**android only**
appActivity
要启动的Activity
appPackage
要启动的包
appWaitActivity
等待的Activity
appWaitPackage
deviceReadyTimeout
等待设备就绪的时间
androidCoverage
enablePerformanceLogging
(Chrome and webview only)default=false
androidDeviceReadyTimeout
androidDeviceSocket
avdLaunchTimeout
avdReadyTimeout
useKeystore
keystorePath
keystorePassword
keyPassword
chromedriverExecutable
autoWebviewTimeout
intentAction
intentCategory
intentFlags
optionalIntentArguments
unicodeKeyboard
resetKeyboard
Skip checking and signing,work only with UiAutomator and not with selendroid
ignoreUnimportantViews
calendarFormat
launchTimeout
locationServicesEnabled
locationServicesAuthorized
autoAcceptAlerts
nativeInstrumentsLib
nativeWebTap
safariAllowPopups
safariIgnoreFraudWarning
safariOpenLinksInBackground
keepKeyChains
localizableStringsDir
processArguments
interKeyDelay
showIOSLog
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:106886次
积分:1900
积分:1900
排名:第14805名
原创:82篇
转载:18篇
评论:32条
文章:15篇
阅读:17510
(1)(1)(3)(4)(1)(2)(1)(2)(14)(6)(9)(19)(17)(5)(9)(6)  一、Inspector定位  平时我们定位元素的时候,通常是按下面的方式设置的。  Device Name填写的是模拟器的名称,启动模拟器,appium后,再启动Inspector就能Reflesh启动App,来进行操作。可是这存在一个问题:模拟器比较慢,而且多少和真机不一样,比如说模拟器不能调出键盘等;所以如果我们要做自动化测试的时候,最好还是用真机来运行app,然后进行定位。  真机运行Inspector的时候也非常简单,首先将手机连接到电脑上。如果有91手机助手或是类似的软件的时候,就会提示是否连接成功!一定要确保连接成功,然后将Device Name替换成手型号,如下所示:  然后运行appium,启动inspector,就可以在真机上安装并启动App,此时刷新就可以获取最新的Screenshot,左边就能展开对应的分支,你就可以大展拳脚,进行定位了。  注:用Appium Inspector在真机上运行并定位元素的时候,不管你现在有没有安装这个App,它都会给你重新安装一下,然后再打开,这个是很不爽的。不过运行的时候,如果有安装,则直接打开,没有安装时才会安装。  二、UI Automation Viewer定位  只要你用真机连接上电脑,并运行了要测试的App,打开UI Automation Viewer后,单击“Device Screenshot”按钮,就能刷新出手机上的界面,并能展示定位,如果有任何变动。再次刷新即可。Appium: Mobile App Automation Made Awesome.
Appium Philosophy
Appium is built on the idea that testing native apps
shouldn't require including an SDK or recompiling your app.
And that you should be able to use your preferred test
practices, frameworks, and tools. Appium is an open source
project and has made design and tool decisions to encourage
a vibrant contributing community.
Use your favorite tools
Appium aims to automate any mobile app from any language and
any test framework, with full access to back-end APIs and
DBs from test code. Write tests with your favorite dev tools
using all the above programming languages, and probably more
(with the Selenium WebDriver API and language-specific
client libraries).
Requirements
Mac OSX 10.7+
XCode 4.5+ w/ Command Line Tools
Mac OSX 10.7+ or Windows 7+ or Linux
Android SDK & 16 (SDK < 16 in Selendroid mode)
Easy setup process, run a test now.
> brew install node
# get node.js
> npm install -g appium
# get appium
> npm install wd
# get appium client
> appium &
# start appium
> node your-appium-test.js
See the Appium
example tests.

我要回帖

更多关于 接口自动化测试框架 的文章

 

随机推荐