1.客户端(Eclipse)机器A, 服务端(appium、Genymotion)机器B

2.设置Appium,Server Address为192.168.17.123,重新启动Appium

3.在客户端机器A浏览器中输入:http://192.168.17.123:4723/wd/hub,

说明配置成功。

JAVA代码:

其中driver= new AndroidDriver<WebElement>(new URL("http://192.168.17.123:4723/wd/hub"), capabilities);

capabilities.setCapability("app", "F:\\ContactManager.apk");F:\\ContactManager.apk为服务端APK的路径

public class AppiumTest {

    public AndroidDriver<WebElement> driver;

      @BeforeClass
public void startTest() throws MalformedURLException{ // File classpathRoot= new File(System.getProperty("user.dir"));
// File appDir= new File(classpathRoot, "res/app");
// File app= new File(appDir, "ContactManager.apk");
DesiredCapabilities capabilities= new DesiredCapabilities();
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4.2");
// 根据这个app capabilities,Appium会在启动测试之前安装好app到设备
capabilities.setCapability("app", "F:\\ContactManager.apk");
//设置安卓app的包名的capability,告诉appium你要运行哪个app。
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager");
driver= new AndroidDriver<WebElement>(new URL("http://192.168.17.123:4723/wd/hub"), capabilities);
} @Test
public void addContact() {
// WebElement el= driver.findElement(By.xpath(".//*[@text='Add Contact']"));
WebElement el = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add Contact\")");
el.click();
List<WebElement> textFieldsList= driver.findElementsByClassName("android.widget.EditText");
textFieldsList.get(0).sendKeys("Some Name");
textFieldsList.get(2).sendKeys("Some@example.com");
driver.swipe(100, 500, 100, 100, 2);
driver.findElementByXPath(".//*[@text='Save']").click(); } @AfterClass
public void afterClass() {
driver.quit();
} }

Appium——主从控制执行的更多相关文章

  1. 大家一起和snailren学java-(三) 操作符&控制执行流程

    “又是新的一周,感觉要学的东西还有好多,加油.由于第三章和第四章内容要总结的不是很多,没太多需要拿出来说的,就整合到一个帖子好了” 操作符 操组符,什么是操作符?其实就是+-*/=&^~| 等 ...

  2. android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)

    android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法     //业务数据初始化 1.1   v5db.p ...

  3. 第二部分 条件控制执行语句、循环语句、switch语句、跳转语句和其它语句

    条件控制执行语句: if语句 if....else....语句 循环语句: while语句 do....while语句 for语句 switch语句: 跳转语句: break; continue; r ...

  4. java控制执行流程

    控制执行流程 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html java当中涉及到的关键字包括if-else.whil ...

  5. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  6. [Java编程思想-学习笔记]第4章 控制执行流程

    4.1  return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ...

  7. android模拟器(genymotion)+appium+python 框架执行过程中问题解答

    1.case运行过程中中文输入不进去? 答:注意事项 1)需要修改系统编码为utf-8,才能解决中文输入问题,case执行入口文件添加代码如下: import sys reload(sys) sys. ...

  8. 控制执行流程——(Java学习笔记三)

    if-else     控制程序流程最基本的形式 格式: if(boolean - expresion){ statement } 或 if(boolean - expresion){ stateme ...

  9. appium的webdriver执行swipe

    # convenience method added to Appium (NOT Selenium 3) def swipe(self, start_x, start_y, end_x, end_y ...

随机推荐

  1. Ubuntu 14.04 下安装 MongoDB 服务器 和 PHP MongoDB Driver 数据驱动

    https://laravel-china.org/topics/309/install-mongodb-server-and-php-mongodb-driver-data-driver-under ...

  2. Base64 转 图片

    static void Main(string[] args) { string s = "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAAC ...

  3. Python 模块EasyGui详细介绍

    转载:无知小德 Python 模块EasyGui详细介绍 EasyGui 官网: http://easygui.sourceforge.net 官方的教学文档:http://easygui-docs- ...

  4. vuex状态管理2

    在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中 ...

  5. HTTP API网关选择之一Kong介绍

    为什么需要 API 网关 在微服务架构之下,服务被拆的非常零散,降低了耦合度的同时也给服务的统一管理增加了难度.如上图左所示,在旧的服务治理体系之下,鉴权,限流,日志,监控等通用功能需要在每个服务中单 ...

  6. VC中function函数解析

    C++标准库是日常应用中非常重要的库,我们会用到C++标准库的很多组件,C++标准库的作用,不单单是一种可以很方便使用的组件,也是我们学习很多实现技巧的重要宝库.我一直对C++很多组件的实现拥有比较强 ...

  7. Java的Start和Runnable方法的区别

    两种方法的区别 1) start:用法:start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调用Thread类的start()方法来启动一 ...

  8. 阿里云:游戏行业DDoS攻击解决方案

    转自:http://www.gamelook.com.cn/2018/01/319420 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游 ...

  9. MySQL 8.0用户和角色管理

    MySQL 8.0用户和角色管理 MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理,默认的密码加密方式也做了调整,由之前的sha1改为了sha2,同时加上5.7的禁用用户和用户过期的设 ...

  10. POI实现数据导入功能

    一.导入过程(基本就是导出的逆向过程) 1.存在一个包含数据的Excel文件 2.将文件作为参数传到服务器 3.服务器解析文件,并将数据封装成实体对象 4.将对象持久化更新到数据库 5.刷新页面导入成 ...