代码的步骤和swipe类似,而且最终调用的也是UiDevice.swipe方法,那么我们来看看到底区别在什么地方。首先它也分控件和坐标,分别分析:

控件

首先将控件的中心点作为起始坐标,然后根据提供的参数xoffset和yoffset来获取位移数据,speed参数用来计算步骤。

steps = 1250.0 / speed + 1;
end.x = start.x + xoffset;
end.y = start.y + yoffset;

起始坐标加上位移就是结束坐标,这个steps的设置还是有点让人摸不着头脑的,我这个1250我且认为是最大位移吧,speed代表每一步走的路程。用1250/speed得到使用多少步到结束点,再加上初始值的那个点就得到steps的值啦。至此起始点坐标、结束点坐标、步骤的值都设置完毕。

坐标

严格来说,不能说成坐标,应该算坐标位移,因为才传入的参数其实坐标系的速度xSpeed和ySpeed。x轴移动xSpeed距离,y轴移动ySpeed坐标。然后获取坐标值和steps值。
其中它用1250和位移的平方做了一次比较,取出最小值来计算steps。起始坐标点定位屏幕的中心点坐标。然后再调用end = calculateEndPoint(start, xSpeed, ySpeed);方法获取结束点坐标。

private Point calculateEndPoint(final Point start, final Integer xSpeed,

final Integer ySpeed) {

final UiDevice d = UiDevice.getInstance();

final Point end = new Point();

final double speedRatio = (double) xSpeed / ySpeed;

double xOff;

double yOff;

final double value = Math.min(d.getDisplayHeight(), d.getDisplayWidth());

if (speedRatio < 1) {

yOff = value / 4;

xOff = value / 4 * speedRatio;

} else {

xOff = value / 4;

yOff = value / 4 / speedRatio;

}

xOff = Integer.signum(xSpeed) * xOff;

yOff = Integer.signum(ySpeed) * yOff;

end.x = start.x + xOff;

end.y = start.y + yOff;

return end;

}

首先计算位移比speedRatio(x的位移/y的位移),然后获取屏幕宽和高中最小的一个数复制给value.如果speedRatio<1,x的移动距离为value的值的1/4.y坐标为和x移动的距离是一样的。所以经过上面的计算得到的结束点的坐标和起始点组成的应该是正方型的对角线。

最后调用UiDevice.swipe和Swipe中是一样的啦。没什么特别的

转载于:https://blog.51cto.com/10988776/1726083

手机自动化测试:appium源码分析之bootstrap六 (下)相关推荐

  1. 手机自动化测试:appium源码分析之bootstrap八

    手机自动化测试:appium源码分析之bootstrap八 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大 ...

  2. 手机自动化测试:appium源码分析之bootstrap十二

    手机自动化测试:appium源码分析之bootstrap十二 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请 ...

  3. 手机自动化测试:appium源码分析之bootstrap七

    手机自动化测试:appium源码分析之bootstrap七 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开发 ...

  4. 手机自动化测试:Appium源码分析之跟踪代码分析四 1

    手机自动化测试:Appium源码分析之跟踪代码分析四 控制器模块 // Appium webserver controller methods // https://github.com/hugs/a ...

  5. CTS(11)---android自动化测试CTS源码分析之一

    android自动化测试CTS源码分析之一 1, 概述 CTS(Compatibility Test Suite)全名兼容性测试,主要目的就是让Android设备开发商能够开发出兼容性更好的andro ...

  6. Retrofit源码分析实践(六)【Retrofit 多BaseUrl问题解决】

    Retrofit源码分析&实践系列文章目录 Retrofit源码分析&实践(一)[从使用入手分析源码] Retrofit源码分析&实践(二)[Retrofit 免费的api测试 ...

  7. app自动化测试之Appium 源码分析

    Appium 是由 Node.js 来实现的 HTTP 服务,它并不是一套全新的框架,而是将现有的优秀的框架进行了集成,在 Selenium WebDriver 协议(JsonWireProtocol ...

  8. 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块

    通过AD作为用户认证的数据源.整个管理用户认证逻辑就在LdapAuthenticationSource类中实现. LdapSettingProvider:定义LDAP的setting和提供Defaut ...

  9. 【转】ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

最新文章

  1. 本文中的问题直接重装mysql即可,但是注意数据也会一并消失
  2. 微软再向开发者重申:UWP 是 PC 的最佳平台
  3. ReportLab for PDF
  4. Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题
  5. java基础题目的网站_Java基础题目
  6. 【深入理解JS核心技术】12. 什么是一阶函数
  7. 抽象代数学习笔记(抽象代数的历史、运算)
  8. 杭州计算机学校课程表,超级课程表电脑版
  9. 软件-xyplorer
  10. 服务器本地文件无法复制粘贴,本地电脑与服务器突然无法直接使用复制粘贴
  11. 每一个小孩都是种子,请允许Ta在成长的路上跌跌撞撞。耐心的等待,种子一定能长成参天大树!
  12. inherits在java中是什么属性_在Java中,要想让一个类继承另一个类,可以使用哪个关键字?()...
  13. ios客户端学习-创建pch文件
  14. HTML怎么设艺术字体,用CSS设计艺术字集锦(二)
  15. 如何将您的iPhone更新到最新的iOS版本
  16. 小米计算机无法清除,小米蓝牙怎么删除不常用设备
  17. 小白学 Python 爬虫(11):urllib 基础使用(一)
  18. python等高线图平滑_用Matplotlib平滑等高线图中的数据
  19. 华为手机耳机sws音效是什么_华为M3平板的SWS 3.0技术对于音效有哪些改善?
  20. 开心消消乐在屏幕中向下移动的完整代码

热门文章

  1. 【转】做正确的事情,等着被开除(Do the right thing, Wait to get fired)
  2. Fetch -- http请求的另一种姿势
  3. AJAX 实现form表单提交
  4. 从头开始学JavaScript (五)——操作符(二)
  5. 灵活运用ISA的链接转换功能:ISA2006系列之十三
  6. SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器
  7. windows平台实现dll远程注入的简单例子
  8. log4j配置和使用
  9. 安装多个版本的jdk
  10. IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git