手机自动化测试(7)--appium代码使用

1安装类

2代码类

2.1 架包引入

(1)参照  Appium环境搭建

2.2 启动篇

	private AndroidDriver<AndroidElement> driver;

	@Before
	public void setUjp() throws Exception {
		// set up appium
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability("deviceName", "Android Emulator");
		capabilities.setCapability("platformVersion", "4.4");
		capabilities.setCapability("appPackage", "com.example.android.apis");
		capabilities.setCapability("appActivity", "com.example.android.apis.ApiDemos");
		try {
			driver = new AndroidDriver<>(new URL("http://127.0.0.1:7922/wd/hub"), capabilities);
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			throw ex;
		}
	}
(1)定义driver对象需要使用AndroidDriver而不能是AppiumDriver,原因是AndroidDriver附加有一些特殊方法,用例里面需要使用,例如pressKeyCode

(2)appPackage参数和appActivity参数是可以在系统里面唯一定位app启动页面,可以不用使用app参数

(3)URL是指的服务端

2.3 API篇

(1)element.getCenter()  获取控件中心点坐标

(2)element.getLocation()  获取控件起始坐标(左上角坐标)

(3)element.getSize()  计算出控件大小。值 = 终点坐标X-起点坐标X,终点坐标Y-起点坐标Y

(4)driver.swipe(startx, starty, endx, endy, duration)  滑动(起点X坐标,起点Y坐标,目的X坐标,目的Y坐标,滑动时间)

(5)driver.pressKeyCode(key)   模拟手机按键(比如返回键得KYE值就是4) 

(6)driver.longPressKeyCode(key)  模拟手机长时间按键(比如长按home键)

(7) driver.scrollTo("name")   翻页找到list里面值为name的控件

(8)driver.tap(fingers, x, y, duration) 敲击(x,y)点,duration*5毫秒后松开,如此重复fingers次。

                                                         (例如点击一次20,20:tap(1, 20, 20, 0)

(9)TouchAction 手势

        touch.tap(x, y).waitAction().press(x, y).longPress(element).waitAction(1000).moveTo(x, y).release().perform();
	touch.tap(x, y).waitAction().press(x, y).longPress(element).waitAction(1000).moveTo(x, y).release().cancel();
             tap  敲击

             waitAciton 等待一段时间

             press(x,y) 按下手指

             longpress(x,y) 长按

             moveTo(x,y)  移动

             release() 抬起手指

             cancel() 取消本次手势串

             perform() 发送本次手势串请求

             tap就是press+release+perform

(10)元素查找 

		//弹出单选框
		//appium自带方法定位,先用classname定位到一组元素,再到包含自己控件的元素里面  用classname定位到自己的控件
		List<AndroidElement> text = driver.findElementsByClassName("android.widget.TableRow");
		text.get(7).findElementByClassName("android.widget.TextView").click();

2.4 等待页面打开

<span style="font-size:14px;">               WebDriverWait wait = new WebDriverWait(driver, 60);
		AndroidElement e = wait.until(new ExpectedCondition<AndroidElement>() {
			@Override
			public AndroidElement apply(WebDriver arg0) {
				// TODO Auto-generated method stub

				AndroidElement ae = driver.findElementById("com.duguang.baseanimation:id/tv_hint");
				if (ae.getText().equals("上滑可以进入首页"))
					return ae;
				else
					return null;

			}
		});</span>
3 APPium的机制


客户端将我们的各种指令通过http请求发送到服务端APPIUM,appium再将指令解析出来,调用对应的手机接口,完成各种操作。



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值