首页 > 代码库 > Appium日记20161031 徐慧迅
Appium日记20161031 徐慧迅
今天主要讲了几个要点,分别为屏幕滑动,设置屏幕密码图案,九宫格解锁还有上传下载文件,淘宝最后的付款流程(利用二维坐标定位)还有渠道包定位。
整理下笔记。
第一点:屏幕滑动,获取屏幕分辨率
File screen = driver.getScreenshotAs(OutputType.FILE);
try {
BufferedImage bufferedImage = ImageIO.read(screen);
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
System.out.println("width:"+width+"height:"+height);
driver.swipe(width/2,height*3/4, width/2,height/4, 1000);
} catch (IOException e) {
e.printStackTrace();
}
备注:获取手机屏幕的大小,然后再实现滑动。
要点:
1,我们通过屏幕截图来读取数据,取长宽,然后再用swipe从下屏3/4处到1/4处,如有异常,打印出来。printStackTrace()就是打印异常。
2,屏幕如果往右划,那么width是9/10到1/10(因人而异),同理,往下翻数据,从下往上取数据。
后面我又从网上找到了一种方法
是根据坐标滑动的,这种方法把坐标定的比较确定
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Double> swipeObject = new HashMap<String, Double>();
swipeObject.put("startX", startX);
swipeObject.put("startY", startY);
swipeObject.put("endX", endX);
swipebject.put("endY", endY);
swipeObject.put("duration", duration);
swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
js.executeScript("mobile: swipe", swipeObject);
①X,Y可为coordinator,也可以是percent,duration单位为秒
②可以指定的element,也可以不指定
③appium mac端有swipe的按钮可以试下
第二点,就是设置屏幕密码图案
这里我们讲到了TouchAction
//WebElement el=driver.findElementById("");
TouchAction action1 = new TouchAction(driver);
//action1.press(el).release().perform();
action1.press(260, 920).moveTo(260,0).moveTo(260,0).moveTo(0,280).release().perform();
Thread.sleep(3000);
要点:
1,坐标是采用相对值去定位的。这一点要记清楚。
第三,就是九宫格解锁手机锁定了
这里我先放代码上来
要点:
1,仍然是通过坐标去定位,但是他这个是把我们屏幕分成了几块。他的值有ystep,beginX,beginY,他的startX,starty就是我们常见解锁的第一个键,他等于把九个点连接起来当做一个正方形去定位。这样我们的得到的值就只要通过getsize()去得到了。
第四点,上传下载文件
pullFile(remotePath):上传文件
driver.pullFile(remotePath):下载文件
pullFolder(remotePath):下载文件夹
上传文件举例:
File file = new File("d:\\test.txt"); //test.txt内容为"test" String content = null; try { content = FileUtils.readFileToString(file); } catch (IOException e) { e.printStackTrace(); }
byte[] data = http://www.mamicode.com/Base64.encodeBase64(content.getBytes()); driver.pushFile("sdcard/test.txt", data);
byte[] resultDate = driver.pullFile("sdcard/test.txt"); System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test" |
pushFile(String remotePath, byte[] base64Data)
要点:
将字符数组用64位格式写到远程目录的某个文件中。也可以理解为把本地文件push到设备上。
pullFile(String remotePath)
将设备上的文件pull到本地硬盘上
pullFolder(String remotePath
将设备上的文件夹pull到本地硬盘上,一般远程文件为/data/local/tmp下的文件。
五,淘宝流程已完成,最后付款
要点:
这是第二种方法,我们一排一排来,通过startX ,endX startY ,endY来取值,封装了top的方法来去
而第一种,就是通过坐标来取值,不要分为left right,center,直接通过自己的坐标,与九宫格类似。
第六点:渠道包测试
尚在执行
Appium日记20161031 徐慧迅