appium相关方法

1、相对坐标解锁九宫格

应用场景

QQ解锁屏幕如上,可见九个按键在同一个View下面,要实现解锁,用press   moveTo  release  perform方法

实现代码如下:

     WebElement jiugongge = pi.findByXpath("jiugongge");//获取九宫格所在的位置元素
        final TouchAction touchAction = new TouchAction(driver);
        // 元素的起始x和y坐标
        Point start = jiugongge.getLocation();
        int startX = start.x;
        int startY = start.y;
        System.out.println("startX : "+startX);
        System.out.println("startY : "+startY);
        // 元素的宽和高
        Dimension q = jiugongge.getSize();
        int width = q.getWidth();
        int hight = q.getHeight();
        System.out.println("width : "+width);
        System.out.println("hight : "+hight);
        //计算每个数字间隔的距离
        int jianjuX = width/3;
        int jianjuY = hight/3;
        System.out.println("jianjuX : "+jianjuX);
        System.out.println("jianjuY : "+jianjuY);
        // 计算出控件结束坐标
        int endX = width + startX;
        int endY = hight + startY;
        System.out.println("endX :"+endX);
        System.out.println("endY :"+endY);
        //1 的坐标
        int oneX = startX + jianjuX/2;
        int oneY = startY + jianjuY/2;
        System.out.println("oneX : "+oneX);
        System.out.println("oneY : "+oneY);

        //上下滑动时,x相对坐标为0,y的相对坐标为高度的jianju,相对坐标值为正数时向下you滑动,为负数时向上zuo滑动
        touchAction.press(oneX, oneY).waitAction(500).moveTo(jianjuX, 0).moveTo(jianjuX, 0).moveTo(-jianjuX, jianjuY).moveTo(-jianjuX, jianjuY).moveTo(jianjuX, 0).moveTo(jianjuX, 0).waitAction(500).release();
        touchAction.perform();

基本思路:

1、找到元素所在位置;

2、求出第一个点的坐标;

3、找出平均移动的间距;

4、利用TouchAction 的press()  moveTo()等方法实现相对移动

解释:press(oneX, oneY)是按下时的坐标,moveTo()的坐标就是相对于按下的那个坐标而言

上下滑动时,x相对坐标为0,y的相对坐标为高度的jianju,相对坐标值为正数时向下右滑动,为负数时向上左滑动

 2、在控件上进行上下左右滑动

应用场景:

在第一个聊天的控件上进行左滑删除操作

实现代码如下:

/**
     * 根据控件定位
     * 在控件内上下左右滑动
     * @param element      控件定位方式
     * @param heading 滑动方向 UP  DOWN
     */
    public void swipeControl(WebElement element, Heading heading) {

        // 获取控件位置的坐标轴
        Point start = element.getLocation();
        int startX = start.x;
        int startY = start.y;
        // 获取控件坐标轴差
        Dimension q = element.getSize();
        int x = q.getWidth();
        int y = q.getHeight();
        // 计算出控件结束坐标
        int endX = x + startX;
        int endY = y + startY;
        // 计算中间点坐标
        int centreX = (endX + startX) / 2;
        int centreY = (endY + startY) / 2;
        switch (heading) {
            // 向you滑动
            case RIGHT:
                driver.swipe(endX - 10, endY, centreX, endY, 500);
                break;
            // 向zuo滑动
            case LEFT:
                driver.swipe(endX- 10,endY , centreX , endY -5, 1000);
                break;
            //向上滑动
            case UP:
                driver.swipe(endX,endY + 5,centreX,centreY,1000);
                break;
            //向下滑动
            case DOWN:
                driver.swipe(endX,endY - 5,centreX,centreY,1000);
                break;
        }

    }
/**
     * 控制滑动方向
     */
    public enum Heading {
        RIGHT, LEFT,
        UP, DOWN
    }

 基本思路:

1、找到要滑动的元素;

2、得到元素的起始位置;

3、利用swipe(startx,starty,endx,endy,time)函数进行滑动,time为滑动的时间,毫秒为单位

解释:在滑动的坐标可以根据自己需要的进行控制

3、清楚控件的值

应用场景:密码框获取不到值,直接用appium自带的clear函数不能清除干净

亲测,QQ的密码框的值用clear函数有时候不能清除感觉

实现代码如下:

/**
     * 一个一个删除edittext控件里的值
     * @author lu
     * @param driver
     * @param text
     */
    public void clearText(String text ,int second) {
        driver.pressKeyCode(123);//123:光标移动到输入框最右边
        if(text.length()!=0)
            driver.pressKeyCode(67);//67删除
        CommonUtils.sleep(second);
    }
时间: 2024-12-28 00:40:03

appium相关方法的相关文章

七 Appium常用方法介绍

文本转自:http://www.cnblogs.com/sundalian/p/5629609.html 由于appium是扩展了Webdriver协议,所以可以使用webdriver提供的方法,比如在处理webview页面,完全可以使用webdriver中的方法.当然在原生应用中,也可以使用. 1.元素相关方法 1.1点击操作 WebElement button = driver.findElement(By.id("login")); 或者 WebElement button =

八 Appium常用方法介绍

由于appium是扩展了Webdriver协议,所以可以使用webdriver提供的方法,比如在处理webview页面,完全可以使用webdriver中的方法.当然在原生应用中,也可以使用. 1.元素相关方法 1.1点击操作 WebElement button = driver.findElement(By.id(“login”)); 或者 WebElement button = driver.findElementById(“login”) //然后执行点击操作 button.click();

Appium Python API

Appium Python API (by appium 1.4.13.1) - .contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts - . current_context current_context(self): Returns the current c

关于 appium get_attribute 方法的坑

(得要学着看源码) 问题: self.driver.find_element_by_id("id").get_attribute("content-desc"), 会报NoSuchElement异常,经过验证是get_attribute的问题 问题原因探究:需要学会分析排插定位问题的根源,最关键还是要理解业务.底层代码.调用库实现流程的原理 appium server 在 android 原生应用上获取 attribute 的大致流程为: 从 client 收到获取

Mac下搭建appium自动化测试环境

一起需要装的有: 1.  JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.  SDK(测试安装app需要,链接为SDK24.4.1版本) http://down.tech.sina.com.cn/download/d_load.php?d_id=45703&down_id=2&ip=183.11.129.46 3.  Appium客户端 http://pan.

Appium移动自动化测试之—基于java的iOS环境搭建

本文仅供参考,同时感谢帮助我搭建环境的同事 操作系统的名称:Mac OS X操作系统的版本:10.12.6 接下来我们开始踏上搭建Appium+java+ios之路,本文只说个大概,毕竟本机已经装过了,我就不在折腾了,耗费好几天时间才搞定. 一:安装Appium 1.作者系统安装的Appium版本为:1.6.4,安装方法:打开终端输入:npm install –g [email protected],检查是否安装成功:终端输入appium -v,如果显示版本号说明安装成功. 2.图形界面客户端安

appium+python在Mac上环境搭建

前言 mac上搭建appium+python的环境还是有点复杂的,需要准备的软件 1.nodejs 2.npm 3.cnpm 4.appium 5.pip 6.Appium-Python-Client 一.nodejs安装 1.nodejs下载地址:https://nodejs.org/ 2.下载完成后傻瓜式下一步安装 3.打开终端,查看版本号是否安装成功,输入:node -v 二.npm安装 1.打开终端,输入:sudo bash 2.继续输入:sudo curl -L https://npm

Appium运行报错

Error:Unable to find an active device or emulator with os 4.2.The following are available: 192.168.56.101:5555 原因:运行脚本设置安卓版本与appium设置版本不一致 解决:将脚本和appium改为一致便可

appium 相关内容

appium简明教程(转):http://www.yangyanxing.com/?p=1266 appium使用入门:http://wenku.baidu.com/link?url=J9fpuKe0NPfgt_aL4Pgsxog9FhunEYfbq7swk4GvS578f3Outy-19mtLVokVKQ1aKfi2ymrkAZ0aQ3-eHq5ib321VRJAY17ZhenImTDTHpG IOS.Android自动化测试框架Appium概述:http://www.2cto.com/Art