美文网首页
java+APPium方法大全

java+APPium方法大全

作者: 开心的小哈 | 来源:发表于2020-07-02 18:55 被阅读0次

给注释中添加@Test(enabled = false)代表不执行此方法


image.png

字符串文本定位:
1.text查找
需要调整成1.8后支持的API
androidDriver.findElementsByAndroidUIAutomator("new UiSelector().text("河南")");
进行text查找
2.name查找
androidDriver.findElementByName("长沙").click();
3.坐标定位

不清除掉应用的数据启动测试

对配置对象DesiredCapabilities调用设置
//noReset:不清楚掉应用的数据启动测试,true不清除,false清除
desird.setCapability("onReset", "true");
元素等待
1.强制等待
设置固定时间Thread.sleep()
2.隐式等待(参数一等待时间,参数二等待时间单位)
androidDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
3.显示等待
针对某个元素设置等待时间
WebDriverWait

元素等待

设置元素等待能更加灵活定位元素,增加代码的健壮性
1.强制等待
固定的等待时间
Thread.sleep()
2.隐式等待
最对全局元素设置等待时间
androidDriver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);(全局查找元素,如果找不到的话调用隐式等待时间内一直找找,找到的话往结束),设置后其实也就不用强制等待了
3.显示等待
针对某个元素设置等待时间
WebDriverWait
需要初始化WebDriverWait对象(参数二是超时时间)

//显示等待
        WebDriverWait web=new WebDriverWait(androidDriver,10);
        WebElement webElement=web.until(new ExpectedCondition<WebElement>() {

            @Override
            public WebElement apply(WebDriver input) {
                // TODO Auto-generated method stub
                return androidDriver.findElementById("com.rongda.investmentmanager:id/et_name");
            }
        });
        webElement.click();
    }

显示等待如果10秒内没有仍然没有找到元素则抛出异常
(就是直到元素出现才去操作,如果超时则报异常)

APP手势操作-滑动

将手机的显示指针位置功能打开

单次滑动

5.0之前有特定的方法:androidDriver.Swipe(startX,startY,endx,endy,duration)

public void testRef() {
        TouchAction touchAction = new TouchAction(androidDriver);
        //把原始的坐标转换成PointOption类型的
        //开始坐标
        PointOption startpoint = PointOption.point(396, 594);
        //终止坐标
        PointOption endpoint = PointOption.point(396, 594);
        //把原始的时间Duration类型的
        Duration ofMillis = Duration.ofMillis(800);
        //把Duration时间转换成waitAction类型的
        WaitOptions waitOptions = WaitOptions.waitOptions(ofMillis);
        //配置滑动
        touchAction.press(startpoint).waitAction(waitOptions).moveTo(endpoint);
        //执行
        touchAction.perform();
    }
多次滑动

调用多次:.moveTo即可

//实例化TouchAction对象
        TouchAction touchAction = new TouchAction(androidDriver);
        //把原始的坐标转换成PointOption类型的
                //开始坐标
                PointOption startpoint = PointOption.point(396, 594);
                //终止坐标
                PointOption endpoint = PointOption.point(396, 594);
                //把原始的时间Duration类型的
                Duration ofMillis = Duration.ofMillis(800);
                //把Duration时间转换成waitAction类型的
                WaitOptions waitOptions = WaitOptions.waitOptions(ofMillis);
                //配置滑动
        //例如第一个点坐标:150,427第二个坐标:362.427,第三个点坐标:569,427
        //第四个点坐标:359,625
                PointOption startpoint1 = PointOption.point(396, 594);
                PointOption startpoint2 = PointOption.point(396, 427);
                PointOption startpoint3 = PointOption.point(396, 150);
                touchAction.press(startpoint3).waitAction(waitOptions).moveTo(startpoint1).moveTo(startpoint2).release();
                touchAction.perform();

多点触摸
MultiTouchAction类可以模拟用户多点触摸操作
主要包含有add()和perform()两个方法
可以结合TouchAction模拟多根手指滑动效果

public void testMutiSwipediru() {
        //1.实例化MultiTouchAction对象
        MultiTouchAction multiTouchAction = new MultiTouchAction(androidDriver);
        //2.实例化两个TouchAction(应为需要两根手指进行放大操作)
        TouchAction touchAction = new TouchAction(androidDriver);
        TouchAction touchAction2 = new TouchAction(androidDriver);
        //得到当前屏幕的高度和宽度
        int x = androidDriver.manage().window().getSize().getWidth();
        int y = androidDriver.manage().window().getSize().getHeight();
        //获取第一根手指滑动到A点
        touchAction.press(PointOption.point(x*4/10, y*4/10)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000))).moveTo(PointOption.point(x*2/10, y*2/10)).release();
        //第二根手指
        touchAction2.press(PointOption.point(x*6/10, y*6/10)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000))).moveTo(PointOption.point(x*8/10, y*8/10)).release();
        //把两根手指的动作添加到MultiTouchAction里面
        multiTouchAction.add(touchAction);
        multiTouchAction.add(touchAction2);
        multiTouchAction.perform();
    }

相关文章

网友评论

      本文标题:java+APPium方法大全

      本文链接:https://www.haomeiwen.com/subject/vvarqktx.html