//点击public static void click(BySelector by) {mDevice.wait(Until.findObject(by), waitTime);UiObject2 x = mDevice.findObject(by);if (x != null) {x.click();Log.e(TAG, "点击: " + by.toString() + " 成功");contentPass("点击", "click", by.toString(), "");} else {Log.e(TAG, "没找到: " + by.toString() + " 开始滚动屏幕查找");String byString = by.toString();String byStringMini = byString.substring(byString.indexOf("'\\Q") + 3, byString.lastIndexOf("\\E']"));if (byString.contains("[TEXT=")) {slideFindText(byStringMini);} else if (byString.contains("[RES=")) {slideFindRes(byStringMini);} else if (byString.contains("[CLASS=")) {slideFindClass(byStringMini);}UiObject2 y = mDevice.findObject(by);if (y != null) {y.click();Log.e(TAG, "点击:" + by.toString() + "成功");contentPass("点击", "click", by.toString(), "");} else {screenShot("点击失败" + FileTools.time("ddHHmmss"));Log.e(TAG, "点击" + by.toString() + "失败");contentFail("点击", "click", by.toString(), "");}}}//滚动屏幕找到指定textpublic static void slideFindText(String string) {UiScrollable scroll = new UiScrollable(new UiSelector().className(layout));
//        scroll.setMaxSearchSwipes(1);//设置最大滚动次数,没有此代码则一直滚动boolean re = false;try {re = scroll.scrollIntoView(new UiSelector().text(string));//滚动到某个对象,scrollIntoView里面的对象只能是UiObject或UiSelector} catch (UiObjectNotFoundException e) {e.printStackTrace();}if (re) {Log.e(TAG, "找到了text:" + string);contentPass("滚动屏幕找到指定text", "slideFindText", string, "");} else {Log.e(TAG, "没找到text:" + string);contentFail("滚动屏幕找到指定text", "slideFindText", string, "");}}//滚动屏幕找到指定idpublic static void slideFindRes(String string) {UiScrollable scroll = new UiScrollable(new UiSelector().className(layout));
//        scroll.setMaxSearchSwipes(1);//设置最大滚动次数,没有此代码则一直滚动boolean re = false;try {re = scroll.scrollIntoView(new UiSelector().resourceId(string));//滚动到某个对象,scrollIntoView里面的对象只能是UiObject或UiSelector} catch (UiObjectNotFoundException e) {e.printStackTrace();}if (re) {Log.e(TAG, "找到了id:" + string);contentPass("滚动屏幕找到指定id", "slideFindId", string, "");} else {Log.e(TAG, "没找到id:" + string);contentFail("滚动屏幕找到指定id", "slideFindId", string, "");}}//滚动屏幕找到指定classNamepublic static void slideFindClass(String string) {UiScrollable scroll = new UiScrollable(new UiSelector().className(layout));
//        scroll.setMaxSearchSwipes(1);//设置最大滚动次数,没有此代码则一直滚动boolean re = false;try {re = scroll.scrollIntoView(new UiSelector().className(string));} catch (UiObjectNotFoundException e) {e.printStackTrace();}if (re) {Log.e(TAG, "找到了id:" + string);contentPass("滚动屏幕找到指定className", "slideFindClass", string, "");} else {Log.e(TAG, "没找到id:" + string);contentFail("滚动屏幕找到指定className", "slideFindClass", string, "");}}

uiautomator2.0封装点击元素的方法(如果没有找到则滚动屏幕查找,直到找到后点击)相关推荐

  1. Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire

    升级到 Swift3.0 之后,新版本的 Alamofire 只支持 iOS 9.0 以上的系统,如果要适配 iOS 8,需要自己封装 URLSession,下面是笔者的方案: 这里使用的是 Swif ...

  2. html实现点击元素的出现与隐藏

    html点击元素出现隐藏提示 需要隐藏或提示的内容 使用jquery完成点击元素出现提示 点击元素以外提示隐藏 完整的代码段 需要隐藏或提示的内容 今天想做一个网页,实现点击文本框出现文字提示,点击文 ...

  3. Tomcat8 安装后点击startup出现闪退的解决方法(转)

    Tomcat8 安装后点击startup出现闪退的解决方法(转) 参考文章: (1)Tomcat8 安装后点击startup出现闪退的解决方法(转) (2)https://www.cnblogs.co ...

  4. vue封装jquery修改自身以及兄弟元素的方法

    在项目中我们经常有,点击某一个元素让其自身样式发生变化,同时其兄弟元素改变的需求,最简单的就是通过Jquery来操作,但是如果需求多的话,那么我们就可以对这个方法进行封装,然后再引入使用.今天我们就来 ...

  5. 网页加载的不同的方式、点击按钮显示一句话、jQuery中获取元素的方法

    网页加载的不同的方式 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  6. python元素定位input button_python+selenium 定位到元素,无法点击的解决方法

    报错 selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (234.75 ...

  7. selenium点击元素位置_Selenium常见元素定位方法和操作

    一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html        这里有各种策略用于定位网页中的元 ...

  8. php文章周月总排行榜怎么实现,帝国cms7.0实现日 周 月点击排行的方法

    本文将为您介绍的是帝国cms7.0实现日 周 月点击排行的方法,具体操作方法请看下文: 新增信息的排行不太符合我的要求.就自己琢磨了一套全站信息的月点击.周点击排行.需要新增几个字段及修改文件.下面开 ...

  9. python selenium定位元素方法_[原创] python selenium 元素定位方法封装

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 写好了公用的调用类,接下来就按照pageobject的设计模式写一下基本的元素定位方法,此处我们需要对python的方法传参有所了解,没有自信的同学可以返 ...

最新文章

  1. 根据日期时间和随机量生成唯一ID!!
  2. 基于stm32f405控制三相无刷电机例程_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案...
  3. 表达式x=x(x-1)
  4. python发展历程
  5. 计算机硬件知识pdf,计算机硬件知识 (很详细)
  6. 7-3 输出最大公约数 (10 分)
  7. php部分---单文件上传的封装类
  8. java软件工程师 英文简历_java软件工程师英文简历模板3篇
  9. 图像处理ORL--训练集及测试集建立--Matlab实现
  10. 【滤波器】最小均方(LMS)自适应滤波器
  11. FlashFXP v3.5.4注册码+FlashFXP v3.6.0注册码+FlashFXP v3.7.2.build.1266...
  12. java虚拟机创建失败_java虚拟机创建失败的原因整理
  13. Java邮件发送基于springboot实现
  14. 在AD中设置漫游配置文件与文件夹重定向
  15. ai边缘平滑_如何用PS,将图像边缘线条处理圆滑
  16. 51单片机学习笔记——STC15W201S系列
  17. bestCoder 2015 百度之星程序设计大赛 资格赛-1003-IP聚合
  18. 华硕h410m-f主板检测不到硬盘启动选项?
  19. 关于使用群晖系统创建音乐外链的研究
  20. PDPS软件:机器人可达性测试功能介绍与使用方法

热门文章

  1. Cesium开发入门篇 | 01Cesium介绍
  2. android 调用wps预览文件时,只跳转到主页不能直接显示文件
  3. contentEditable 中光标控制
  4. 中柏pad7安装linux,千元2in1平板新选择 中柏EZpad 7详细图文评测
  5. 武学与Python(一)
  6. hacker.pcapng解析
  7. HTTP 协议(网络协议篇一)
  8. 【程序人生】4000万字的《二十四史》,浓缩为这70句,材料必备。
  9. 出售、赠送或换购 iPhone、iPad 或 iPod touch 前,怎样彻底清理个人信息?
  10. 来看看人工智能是怎么看面相的,用“AI”给吴秀波测面相,发现……