我正在尝试运行命令以在模拟器上滚动屏幕.我尝试了Action类中的一组action命令,但是它们不一致.我最终偶然发现了下面的代码.

是否需要导入或包含某些内容才能使这些操作正常运行?我的另一个困惑是,此代码在使用Espresso驱动程序时有效,但在UiAutomator2驱动程序下运行时却产生此错误消息.我尝试导入Action类,但这不能解决问题.同样,UiAutomator2驱动程序上是否需要导入或专门用于这些命令的内容?

此代码在使用Espresso驱动程序时有效,但在UiAutomator2驱动程序下运行时会产生此错误消息.我尝试导入Action类,但这不能解决问题.

WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(originLocator));

WebElement element2 = wait.until(ExpectedConditions.visibilityOfElementLocated(destinationLocator));

int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);

int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);

int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);

int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);

PointerInput input = new PointerInput(PointerInput.Kind.TOUCH, "input");

Sequence swipeTo = new Sequence(input, 0);

swipeTo.addAction(input.createPointerMove(Duration.ZERO, PointerInput.Origin.viewport(), startX, startY));

swipeTo.addAction(input.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));

swipeTo.addAction(input.createPointerMove(Duration.ofMillis(1000), PointerInput.Origin.viewport(), endX, endY));

swipeTo.addAction(input.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));

driver.perform(Arrays.asList(swipeTo));

这应该在模拟器上滚动移动应用程序的可见页面,但是当前在使用UiAutomator2驱动程序运行时会导致以下错误(org.openqa.selenium.UnsupportedCommandException:操作).

编辑:从下面的注释中应用代码后,我得到以下代码,该代码始终与UiAutomator2驱动程序兼容,但与Espresso驱动程序不兼容(它在屏幕上定位了错误的空间,似乎点击了一个元素而不是触摸并按住) .

WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(originLocator));

WebElement element2 = wait.until(ExpectedConditions.visibilityOfElementLocated(destinationLocator));

int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);

int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);

int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);

int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);

Dimension dim=driver.manage().window().getSize();

int height=(int) dim.getHeight();

int width=(int) dim.getWidth();

int x= width/2;

new TouchAction(driver)

.press(PointOption.point(x,startY))

.waitAction(WaitOptions.waitOptions(Duration.ofMillis(2000)))

.moveTo(PointOption.point(x,endY))

.release()

.perform();

所以我确实为每个驱动程序提供了一个工作版本.有谁知道为什么这些行为取决于所使用的驱动程序?

java unsupport_Java-如何使用Android自动化修复“ UnsupportedC...相关推荐

  1. 【Android 修炼手册】常用技术篇 -- Android 热修复解析

    这是[Android 修炼手册]第 8 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 了解 ClassLoader 相关知识 看完本文可以达到什 ...

  2. Android自动化的一般方法

    1 背景 https://mp.weixin.qq.com/s/B7o3JSkYI_9c4RivatsZKQ Android自动化包含自动化测试和第三方App的自动化运行,这里的自动化测试主要指的是纯 ...

  3. [转] android自动化之MonkeyRunner测试环境配置(一)

    Android自动化测试之MonkeyRunner 一.Android自动化测试之环境搭建 1.1  Android-sdk介绍 ¢ SDK(Software development kit)软件开发 ...

  4. Android热修复之 阿里开源的热补丁

    1.概述   上一期讲到Android热修复之 - 收集崩溃信息上传至服务器,我们获取到用户手中上线的崩溃信息上传到服务器后该怎么办?如果直接发布版本要用户去下载肯定不乐意.这一期我们来看一下怎么去打 ...

  5. 【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )

    文章目录 一.Dex 打包设置 1.多 Dex 支持 2.Dex 分包设置 3.开发和产品风格设置 ( 非必须 ) 二.完整 build.gradle 配置 1.build.gradle 配置 2.d ...

  6. 【Android 热修复】热修复原理 ( 合并两个 Element[] dexElements | 自定义 Application 加载 Dex 设置 | 源码资源 )

    文章目录 一.合并两个 Element[] dexElements 二. 完整修复包加载工具类 三. 源码资源 一.合并两个 Element[] dexElements 在 [Android 热修复] ...

  7. 【Android 热修复】热修复原理 ( 修复包 Dex 文件准备 | Dex 优化为 Odex | Dex 文件拷贝 | 源码资源 )

    文章目录 一.修复包 Dex 文件准备 二.Odex 优化 三.Dex 文件拷贝 四. 源码资源 一.修复包 Dex 文件准备 异常代码 : 故意写一个异常代码 , 并执行该代码 , 肯定会崩溃 ; ...

  8. 深入解析阿里Android热修复技术原理

    前言:本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简 ...

  9. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

最新文章

  1. SQL GROUP BY 语句
  2. 连岳读书|这是不让人害怕的数学,课堂上学不到的数学!
  3. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
  4. OK6410裸机开发之LED灯
  5. Linux中shell的介绍
  6. php 上万关键字匹配,JavaScript 上万关键字瞬间匹配实现代码
  7. leetcode43. 字符串相乘
  8. oracle指令df,​ oracle 常用命令大汇总
  9. mysql join图解_MySQL中Join算法实现原理分析[多图]
  10. Maximum Subarray leetcode java
  11. 三星 android 截屏,三星S7怎么截屏 3种三星S7截图方法
  12. sql server 监视_使用动态管理对象监视SQL Server –请求
  13. php log 行号 debug_backtrace,PHP 基于debug_backtrace的流程日志与日志分析
  14. php !$rs-gt;bof and !$rs-gt;eof,关于rs.bof rs.eof的一些解释,请大家帮我完善一下,谢谢...
  15. CDN的基本概念和产生背景
  16. 台式机dp接口_常见视频接口图示及说明
  17. 【Unity2D】实现人物死亡动画+代码
  18. 1一10到时的英文单词_1英语(1到10的英语单词)
  19. 【10.28 校内普及组】 小B浇花 题解
  20. 2019年双十一购物数据分析报告

热门文章

  1. 佛山顺德水利所液晶拼接屏项目解析
  2. MySql按列分组然后求和
  3. 如何系统全面地自学Java语言?明确后我直接拿到了20K!
  4. linux aaa认证服务器,Windows下AAA服务器的搭建及身份认证!
  5. 用AI算法起中文名字 ---- 传统起名字方法(2):传统经典起名方法罗列(1)
  6. 分布式锁Redisson的使用
  7. 图片怎样转换成PDF的
  8. luogu P4921 [MtOI2018]情侣?给我烧了! 加强版
  9. **关于DDR的个人总结**
  10. 华硕台式机VT-x设置