你的位置:首页 > 软件开发 > Java > 让ChromeDriver支持TouchActions

让ChromeDriver支持TouchActions

发布时间:2016-02-22 01:00:05
0x01 背景 最近接到页面自动化测试的需求,要求对线上的手机网页进行自动化的测试与监控。 查了一下资料,对比了一下Selendroid、Appium和比较流行的Genymotion,结论如下: 优点:他们都是基于真机或者虚拟机的自动化测试,能够真实模拟用户的操作环境 缺点:真机 ...

让ChromeDriver支持TouchActions

0x01 背景

最近接到页面自动化测试的需求,要求对线上的手机网页进行自动化的测试与监控。

查了一下资料,对比了一下Selendroid、Appium和比较流行的Genymotion,结论如下:

优点:他们都是基于真机或者虚拟机的自动化测试,能够真实模拟用户的操作环境

缺点:真机需要一直将手机连到电脑上,虚拟机的效率又太低,Genymotion的免费版还不能联网……

考虑到平时很少出现兼容性的问题,且手机浏览器都是基于Webkit的,桌面版Chrome也是,所以最终把技术方案定为Java+Selenium+Chrome模拟手机浏览器

0x02 杀出拦路虎——TouchActions

根据ChromeDriver的官方文档,很快实现了手机浏览器的模拟,展示、点击、插入JS等玩的不亦乐乎,H5的特性支持的都非常不错。

但是,当模拟触摸事件,开始使用TouchActions的时候,出现了报错:

让ChromeDriver支持TouchActions

由于没怎么写过Java,查了下,好像是个类型转换的错误,跟着错误信息,发现是TouchActions.java初始化的时候报错:

让ChromeDriver支持TouchActions

认真看了遍官方文档,没找到说法……

0x03 万能的Github给出答案

找了一圈,发现有人在Github上给Selenium起了一个分支,专门修复这个问题

https://github.com/rovner/selenium/tree/chrome-has-touch-screen

让ChromeDriver支持TouchActions

大意是说:为了让ChromeDriver支持TouchActions,要让ChromeDriver实现HasTouchScreen接口

0x04 解决方案

大神的repo里给出了方案,不过对Selenium源码进行了改动,需要自己重新打成jar包才能用。

这里给出我的解决方案:新建一个MobileChromeDriver,继承ChromeDriver并实现HasTouchScreen接口

// a ChromeDriver that enables TouchActionpublic class MobileChromeDriver extends ChromeDriver implements HasTouchScreen {  private RemoteTouchScreen touch;  public MobileChromeDriver(Capabilities capabilities) {    super(capabilities);    touch = new RemoteTouchScreen(getExecuteMethod());  }  public TouchScreen getTouch() {    return touch;  }}

原标题:让ChromeDriver支持TouchActions

关键词:chrome

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录