嗯,还是把自己做的实验保存一下

Appium1.12.1+python2.7 实验滚动,查找屏幕外控件以及控制seekbar

scroll() 是根据页面中两个元素位置之间的距离进行滑动。

滑动寻找屏幕外的特定元素,Python可以用find_element_by_android_uiautomator('Uiautomator-Java代码语句'),会上下都滚动一次,遍历一遍。

运行环境:Ubuntu18.0, Appium-linux-1.12.1.AppImage, Python2.7

使用的平板,在settings中测试滚动查找控件

test_scroll:

1.将“家长监护”滚动至原本“显示”所在的位置

2.滚动查找屏幕外的“辅助功能”

test_seekBar

3.控制“显示”功能调节亮度的seekBar,通过坐标滑动(代码中坐标,X坐标从控件宽度取值,因为等于屏幕宽所以才这样取)

#coding=utf-8
'''
Created on 2019年8月31日
@author: derik
'''
import unittest
from appium import webdriver
from selenium.webdriver.common.by import By class Test(unittest.TestCase): def setUp(self):
desired_caps={}
# 测试设备的系统版本,adb shell getprop | grep ro.build.version
desired_caps['platformVersion']='5.1.1'
desired_caps['platformName']='Android'
desired_caps['deviceName']='G0B0ME036482001L'
# 测试启动的APK包名/活动名 adb shell dumpsys activity activities | grep mFocusedActivity
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'
# 每次启动不要清除应用数据
desired_caps['noReset']='true'
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
# 设置隐式等待时间,10秒内找不到控件,等待
self.driver.implicitly_wait(10) def tearDown(self):
self.driver.quit() def test_scroll(self):
# 寻找控件方法:driver.find_element(By.查询方式,"查询的条件")
XianShi=self.driver.find_element(By.XPATH, "//android.widget.TextView[@text='显示']")
parentMonitor=self.driver.find_element(By.XPATH, "//android.widget.TextView[@text='家长监护']")
#将‘家长监护’滚动到‘显示’的位置,
self.driver.scroll(parentMonitor,XianShi,3000)
#滚动完之后,若想点击‘家长监护’,不能使用parentMonitor.click(),会点到“错误”的坐标,滚动后,分析节点数据获得的坐标过时了吧
#需要重新寻找控件,即self.driver.find_element(By.XPATH, "//android.widget.TextView[@text='家长监护']").click()
#滚动查找不在屏幕内的指定控件;会滚回到顶层重新找起
#以下方法实验中发现的需要注意,指定条件的控件只要在屏幕底层出现,程序是能识别的(毕竟是直接分析的节点数据),但有的应用在底部有遮挡住listView部分的控件,像酷狗音乐底部就有,
#这时程序虽然识别到了,但此时人眼看去是看不到的,被遮挡住了,想要对指定控件操作比如点击,就会点到遮挡的控件上,
self.driver.find_element_by_android_uiautomator('new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().text("辅助功能"))')
def test_seekBar(self):
# 寻找控件方法:driver.find_element_by_xpath('查询的条件')
self.driver.find_element_by_xpath("//android.widget.TextView[@text='显示']").click()
seekBar=self.driver.find_element(By.ID,'com.android.settings:id/f_seekbar') #获取到
#获取seekbar控件本身的(尺寸)宽度
startX=seekBar.size.get('width')
#获取控件中间位置y坐标,(试过后验发现不加尺寸的一半也能操作)
#控件的坐标Y(应该是左上角的坐标)+控件本身高度的一半
startY=seekBar.location.get('y')+(seekBar.size.get('height'))/2
#通过控件的坐标滑动seekbar,从seekBar的1/4处滑动到3/4处
self.driver.swipe(startX/4,startY,startX*3/4,startY, 3000)

if __name__ == "__main__":
unittest.main()
结果图像记录:

————————————————

原文链接:https://blog.csdn.net/qq_37112121/article/details/100172538

appium滚动查找屏幕外的控件的更多相关文章

  1. Recyclerview点击事件,更新item的UI+更新Recyclerview外的控件

    项目中用到了Recyclerview,在第一行代码中学到了一种相对来说简单的点击事件方法,可是这种点击事件是在adapter中写的,没有教怎么更新item的ui和更新Recyclerview之外的控件 ...

  2. OpenLayers在地图外放置控件

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  3. Appium入门(8)__控件定位

    部分摘自:http://www.testclass.net/appium/appium-base-find-element/ appium 通过 uiautomatorviewer.bat 工具来查看 ...

  4. UWP 查找模板中的控件

    这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...

  5. appium简明教程(10)——控件定位基础

    狭义上讲,UI级的自动化测试就是让机器代替人去点来点去的过程. 但机器去点什么(点上面还是点左边),怎么点(是长按还是轻触),这些东西是必须由代码的编写者所指示清楚的. 控件定位就是解决机器点什么的问 ...

  6. 移动端自动化测试 -- appium 之Desired Capabilities与 定位控件

    一.Desired Capabilities Desired Capabilities 在启动 session 的时候是必须提供的. Desired Capabilities 本质上是以 key va ...

  7. Wp8滚动区域(ScrollViewer)控件的使用

    1. <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28" ...

  8. 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度

    1.获取Android屏幕尺寸 我们能够通过getSize()方法获得屏幕的尺寸 Display display = getWindowManager().getDefaultDisplay(); P ...

  9. C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框

    1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...

随机推荐

  1. oracle中的常用函数、字符串函数、数值类型函数、日期函数,聚合函数。

    一.字符串的常用函数. --一.oracle 字符串常用函数 --1. concat 连接字符串的函数,只能连接[两个]字符串. 字符写在括号中,并用逗号隔开! --2."||"符 ...

  2. ApacheCN 计算机视觉译文集 20210218 更新

    新增了六个教程: OpenCV3 安卓应用编程 零.前言 一.设置 OpenCV 二.使用相机帧 三.应用图像效果 四.识别和跟踪图像 五.将图像跟踪与 3D 渲染相结合 六.通过 JNI 混合 Ja ...

  3. js源码-数组中的push()和unshift()方法的源码实现

    人话不多,直接上代码,在代码中解析,不足之处请谅解: push() Array.prototype._push=function(...value){//在Array原型链上添加_push方法 for ...

  4. idea的jar文件,“java.lang.SecurityException: Invalid signature file digest for Manifest main attribute

    感谢大佬:https://blog.csdn.net/mingyuli/article/details/84674483 命令行运行jar出现问题: 1.找不到主类.打开jar文件包,在MANIFES ...

  5. k8s之资源限制以及探针检查

    k8s之资源限制以及探针检查 一.资源限制 1. 资源限制的使用 当定义Pod时可以选择性地为每个容器设定所需要的资源数量.最常见的可设定资源是CPU和内存大小,以及其他类型的资源. 2. reuqe ...

  6. 计算机的网络参考模型与5G协议

    计算机的网络参考模型与5G协议    1 分层思想 2  OSI参考模型 3  TCP/IP 协议族的组成 4  数据的封装与解封 5 层间通讯过程 6  空口协议 1.喝可乐的人不一定知道其生产的过 ...

  7. SSH 远程访问及控制 ( 早上好,我是派大星,上帝派来爱你的那颗星)

    远程访问及控制 1.SSH远程管理,TCP Wrappers访问控制 2.配置密钥对验证 1.SSH远程管理,TCP访问控制 SSH是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能: ...

  8. python 使用pip安装包的总结

    multiprocessing.logging模块安装 如果使用在cmd中使用 pip install multiprocessing 会报错, 将命令改为 pip3 install multipro ...

  9. 蟒蛇书学习笔记——Chapter 09 Section 01 创建和使用类

    9.1 创建和使用类 9.1.1 创建Dog类   根据Dog类创建的每个实例都将存储名字和年龄,我们赋予了每条小狗蹲下(sit( ))和打滚(roll_over( ))的能力: class Dog: ...

  10. 我们一起来学Shell - shell的条件判断

    文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...