阅读 58

appium远程控制安卓(appium控制多台手机)

本篇文章给大家谈谈appium远程控制安卓,以及appium控制多台手机对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

如何远程调用Appium Server

Appium Server拥有两个主要的功能appium远程控制安卓: 它是个http服务器,它专门接收从客户端通过基于http的REST协议发送过来的命令 他是bootstrap客户端:它接收到客户端的命令后,需要想办法把这些命令发送给目标安卓机器的bootstrap来驱动uiatuomator来做事情 通过上一篇文章《Appium Server 源码分析之启动运行Express http服务器》我们分析了Appium Server是如何作为一个http服务器进行工作的。那么今天我们就要分析第二点,Appium Server是怎么作为bootstrap的客户端来向目标安卓机器的bootstrap发送命令以驱动uiautomator框架来做事情的 1. MVC设计模式中的Controller及路由Routing 在我们上一篇文章描述appium server在启动http服务器的过程中, 实例化appium 服务器后,下一步就是要设置好从client端过来的请求的数据路由了: [javascript] view plaincopy var main = function (args, readyCb, doneCb) { ... routing(appiumServer); ... } 这里大家要有MVC设计模式这个背景知识,我相信大家做过界面应用或者网站编程的话应该很熟悉这种解藕降低依赖的著名设计模式,如果不清楚的话请自行百度谷歌。这里我会简要摘录下在我们这个http服务器中Controller扮演的角色:MVC的核心就是Controller(控制器),它负责处理http客户端传送过来的所有请求,并决定要将什么内容响应给http客户端。但Controller并不负责决定内容应该如何显示,而是将特定形态的内容响应给MVC架构,最后才由MVC架构依据响应的形态来决定如何将内容响应给http客户端。如何决定响应内容是View的责任。 nodejs的express架构就是采用了MVC框架的,所以这里才有了我们的Routing,我们先找到对应的Routing文件,然后进去看看。我们先看main.js的比较前的变量定义部分: var http = require('http'), express = require('express'), ..., routing = require('./routing.js')可以看到routing是在main.js所在目录的routing.js文件里导出来的,我们打开该文件: var controller = require('./controller.js');module.exports = function (appium) {var rest = appium.rest;var globalBeforeFilter = controller.getGlobalBeforeFilter(appium);// Make appium available to all REST http requests.rest.all('/wd/*', globalBeforeFilter);routeNotYetImplemented(rest);rest.all('/wd/hub/session/*', controller.sessionBeforeFilter);rest.get('/wd/hub/status', controller.getStatus);rest.post('/wd/hub/session', controller.createSession);rest.get('/wd/hub/session/:sessionId?', controller.getSession);rest.delete('/wd/hub/session/:sessionId?', controller.deleteSession);rest.get('/wd/hub/sessions', controller.getSessions);rest.get('/wd/hub/session/:sessionId?/context', controller.getCurrentContext);rest.post('/wd/hub/session/:sessionId?/context', controller.setContext);rest.get('/wd/hub/session/:sessionId?/contexts', controller.getContexts);rest.post('/wd/hub/session/:sessionId?/element', controller.findElement);rest.post('/wd/hub/session/:sessionId?/elements', controller.findElements);rest.post('/wd/hub/session/:sessionId?/element/:elementId?/value', controller.setValue);rest.post('/wd/hub/session/:sessionId?/element/:elementId?/click', controller.doClick);...路由一开始就指定了我们MVC的处理http客户端过来的Controller是controller.js这个javascript脚本 然后从上面调用穿进来的appiumServer中取出express实例并赋给rest这个变量 然后设置gloabalBeforeFilter这个控制器来处理客户端过来的而在这个routing文件中没有定义的请求的情况 在往下就是定义客户端过来的各种请求的controller处理方法了,比如最下面那个客户端请求对一个控件进行点击操作。这里就不一一列举了。这里要注意的是其中大问号的都是代表变量,真正的值是客户端传送过来的时候赋予的,所以解析的时候可以直接取elementId就能得到真正的值了。 这里有一点我觉得需要跟踪下去的是上面的controller.getGlobalBeforeFilter(appium)这个调用,因为这个方法里面设置了appium server的一个很重的成员变量: exports.getGlobalBeforeFilter = function (appium) {return function (req, res, next) {req.appium = appium;req.device = appium.device;...};};就是把appium的device这个成员变量赋予给了nodejs提供的req这个request的device这个变量,当前在没有启动一个与boostrap的session前这个值为null,但往后appium.device将会赋予android这个对象,而因为上面代码的赋值是对象赋值,所以在javascript会是指针传递,那么也就是说最后appium.device被赋值了android对象就相当于req.device被赋予了android这个对象。这个是后话,下面appium远程控制安卓你会跟到这些赋值的变化的了。

appium+python 怎么操作手机浏览器

appium是一个通用appium远程控制安卓的测试框架。只是为appium远程控制安卓了避免程序员重复造轮子。是一个开源appium远程控制安卓的测试框架。

但是它的底层并没有开发自己的库。使用各平台自带的测试API。比如android上使用是谷歌的测试框架。

你的测试用例通过python-client连接到测试管理服务器(NODE JS实现的)。然后就可以通过测试服务器用ADB命令去控制手机了。

如果你过去熟悉ADB命令appium远程控制安卓,这个完全就没有秘密可言。

怎样使用Appium进行Android自动化测试

安装JDK

我所用的Mac系统里面已经自带了JDK,系统中没有安装的,可以到oracle官网下载,下载地址见文后参考资料。

打开~/.bash_profile文件,设置JAVA_HOME环境变量:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home/jre

路径设置为自己的JDK所在的目录。

2

安装Android SDK

解压android-sdk_r24.4.1-macosx.zip到本地目录,我放置的目录是:~/E/_develop/android-sdk

添加ANDROID_HOME环境变量:

export ANDROID_HOME=/Users/ryan/E/_develop/android-sdk

3

安装node

解压node-v4.4.7-darwin-x64.tar.gz到本地目录:~/E/_develop/node-v4.4.7-darwin-x64

添加环境变量:

export NODE_HOME=/Users/ryan/E/_develop/node-v4.4.7-darwin-x64

export PATH=$PATH:$NODE_HOME/bin

控制台运行命令:

node --version

如果控制台输出版本号v4.4.7,则环境配置正确。

4

安装maven

解压apache-maven-3.3.9-bin.zip到本地目录:~/E/_develop/apache-maven-3.3.9

添加环境变量:

export MAVEN_HOME=/Users/ryan/E/_develop/apache-maven-3.3.9

export PATH=$PATH:/Users/ryan/E/_develop/apache-maven-3.3.9/bin

控制台运行命令:

mvn -v

输出下面内容,则环境配置正确。

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)

Maven home: /Users/ryan/E/_develop/apache-maven-3.3.9

Java version: 1.7.0_76, vendor: Oracle Corporation

Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "mac os x", version: "10.11.5", arch: "x86_64", family: "mac"

5

安装Appium

在控制台运行npm命令来安装appium:

npm install -g appium

以上命令安装的appium是控制台程序,没有UI界面。

如果要安装带UI的appium,可以从官网直接下载dmg,当前版本是appium-1.5.3.dmg,运行里面的app即可。

END

使用Appium+Maven自动化测试

下载Maven工程配置文件pom.xml、测试应用 ContactManager.apk、测试代码AndroidContactsTest.java,下载地址见文后参考资料。

创建一个java工程

将pom.xml文件放到工程根目录下。

根目录下新建apps目录,ContactManager.apk文件放到apps目录下。

src目录下新建test/java目录,AndroidContactsTest.java文件放到src/test/java目录下。

修改AndroidContactsTest.java文件,修改内容如下截图。

修改内容为apk所在路径、模拟器的名称和版本信息。

启动模拟器和Appium

命令行运行appium,或者点击界面上最右边的Launch按钮。

进入java工程的根目录,运行Maven命令。

要测试所有的case,运行下面命令:

mvn test

或者测试某一个case,运行下面命令:

mvn test -Dtest=test.java.AndroidContactsTest

运行结束会在控制台输出测试结果。

END

开发包参考地址

1

开发包参考下载地址

AppiumDriver和 AndroidDriver 之间的区别

启动appium,执行testng测试脚本,脚本启动配置项如下:

import io.appium.java_client.AppiumDriver;import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");//这句不是必须的

capabilities.setCapability("deviceName","Android Emulator");

capabilities.setCapability("platformVersion", "4.4");

capabilities.setCapability("platformName","Android");

capabilities.setCapability("appPackage", "com.android.calculator2");

capabilities.setCapability("appActivity", ".Calculator");

AppiumDriver driver = new AppiumDriver(new URL(""), cap

appium远程控制安卓的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于appium控制多台手机、appium远程控制安卓的信息别忘了在本站进行查找喔。

文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐