appium滚动查找屏幕外的控件
嗯,还是把自己做的实验保存一下
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滚动查找屏幕外的控件的更多相关文章
- Recyclerview点击事件,更新item的UI+更新Recyclerview外的控件
项目中用到了Recyclerview,在第一行代码中学到了一种相对来说简单的点击事件方法,可是这种点击事件是在adapter中写的,没有教怎么更新item的ui和更新Recyclerview之外的控件 ...
- OpenLayers在地图外放置控件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- Appium入门(8)__控件定位
部分摘自:http://www.testclass.net/appium/appium-base-find-element/ appium 通过 uiautomatorviewer.bat 工具来查看 ...
- UWP 查找模板中的控件
这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...
- appium简明教程(10)——控件定位基础
狭义上讲,UI级的自动化测试就是让机器代替人去点来点去的过程. 但机器去点什么(点上面还是点左边),怎么点(是长按还是轻触),这些东西是必须由代码的编写者所指示清楚的. 控件定位就是解决机器点什么的问 ...
- 移动端自动化测试 -- appium 之Desired Capabilities与 定位控件
一.Desired Capabilities Desired Capabilities 在启动 session 的时候是必须提供的. Desired Capabilities 本质上是以 key va ...
- Wp8滚动区域(ScrollViewer)控件的使用
1. <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28" ...
- 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度
1.获取Android屏幕尺寸 我们能够通过getSize()方法获得屏幕的尺寸 Display display = getWindowManager().getDefaultDisplay(); P ...
- C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框
1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...
随机推荐
- 如何使用 C++ 和 OpenCV 实现截屏
前言 实现屏幕截屏需要用到 Windows API,所以需要包括 Windows.h 头文件.同时我们想要对截图做进一步的处理,就需要用到 OpenCV.关于 OpenCV 的安装与编译可以参见 &l ...
- linux下core 相关设置
1)core文件简介core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试.当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置 ...
- bom案例5-简单动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- Android 关于Intent的一些简略总结
感谢大佬:https://www.jianshu.com/p/19147a69e970 Intent 常用构造方法: | 方法 | 描述 | |Intent() | 构造一个空 Intent | | ...
- smartimageview 的原理
自定义的控件在布局文件中的引用都需要指定类的完整路径 1.自定义了一个MyImageview类继承了Imageview,添加三个构造方法 2.添加一个setImageUrl方法接受一个图片ur ...
- getter/setter方法
1.setter方法 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 命名规范: 必须是对象方法 返回值类型为void 方法名必须以set开头,而且后面跟上成员变量名去掉"_&q ...
- UITextView模拟UITextField 设置Placeholder属性 --董鑫
由于最近有用到输入框,刚开始考虑的是UITextField,因为它在没有输入的时候可以有提示的Placeholder更能,很人性化,但UITextField只能单行输入,不能跳行,对于一些强迫症的亲来 ...
- 关于LVS的问题总结
关于LVS的问题总结 目录 关于LVS的问题总结 1. LVS工作模式及区别 2. LVS调度算法 3. LVS调度器你的常用算法(均衡策略) (1)固定调度算法:rr.wrr.dh.sh (2)动态 ...
- 用JavaScript+HTML实现双色球随机摇号效果
用JavaScript+HTML实现双色球随机摇号效果 首先要知道双色球的规则是什么 双色球投注区分为红球号码区和蓝球号码区 红球号码范围为01-33,蓝球号码范围为01-16 双色球每期从33个红球 ...
- 学多少年才算“精通Java”?
我从毕业做程序员就开始用 Java,到现在已经工作快 20 年了.减去我做手游用 C++.Lua 的几年,再减去后来转管理写代码少的时间,我真正写 Java 代码的时间至少也在 10 年以上. 如果你 ...