元素定位和基础操作

目录

一、UIAutomatorVirwer的使用

二、UIAutomatorVirwer定位元素方法

三、元素等待

四、元素滑动和拖拽


一、UIAutomatorViewer的使用

1.存放位置

  • 在安卓SDK的tools的bin文件目录下,有个uiautomatorviewer.bat

2.作用

  • 可以使用该工具获取元素特征信息

3.使用场景

        a.电脑连接真机或者打开模拟器

        b.启动要测试的APP

        c.然后去tools的bin文件目录下,打开uiautomatorviewer.bat,打开后,界面如下(会自动打开一个命令行窗口,该命令行窗口不能关闭,关闭之后,整个工具其实也是被关闭了):

4.点击Device Screenshot按钮,可获取到当前测试的APP界面,如图二(可以看到QQ的坐标轴位置以及它的text、id和class属性等,可以用于定位)

5.注意事项

        a.点击Device Screenshot按钮,可能会报错,界面会提示:“Unable to connect adb. Check if adb is installed correctly.”,但是此时你又有连接设备。

解决方案:可以打开命令行输入 adb kill-server ,然后再输入adb start-server  

        b.打开这个工具的时候会自动打开一个命令行窗口,该命令行窗口不能关闭,关闭之后,整个工具其实也是被关闭了


二、UIAutomatorVirwer定位元素方法

1.定位一个元素:常用的定位方法有三种,通过id、class、xpath定位

 a.通过id定位:参数为resource-id

driver.find_element_by_id("resource-id")

b.通过class定位:参数为class

driver.find_element_by_class_name("class")

c.通过xpath定位:xpath的表达式(有两种方式)

driver.find_element_by_xpath("//*[@content-desc='xxx']").click()
driver.find_element_by_xpath("//*[@text='xxx']").click()

下图截图为通过UIAutomatorVirwer定位某元素,其中包含resource-id、class和xpath参数

注意:如果有多个元素属性一致,那么使用使用find_element_by_id/xpath/class方法找到的是第一个

2.定位一组元素:一组元素和一个元素的区别就在于多和少,那就是英语上常用的s,如下代码

#通过id定位
driver.find_elements_by_id("resource-id")
#通过class定位
driver.find_elements_by_class_name("class")
#通过xpath定位方式1
driver.find_elements_by_xpath("//*[@content-desc='xxx']").click()
#通过xpath定位方式2
driver.find_elements_by_xpath("//*[@text='xxx']").click()

三、元素等待

1.作用:当我们在查找元素的时候,这个时候元素可能还没有出来,所以无法定位到,此时可以添加一个元素等待

2.分类:分为显式等待和隐式等待

        a.显式等待:通过WebDriverWait 对象中的until的方法,设置之后,会有一个超时时间等待,在这个超时时间内每0.5s去查找一次,这个0.5是可以自己设置的。如果没有找到元素,则报错:TimeOutException,如果找到了,则执行下一步操作

        b.隐式等待:通过driver调用implicitly_wait()方法,括号里面为超时时间,如果设置了超时时间,超过这个时间,所有的定位元素的方法都会在这个时间内等待元素的出现。假设没有出现匹配元素,则报错:NoSuchElementException,如果出现了,则执行下一步动作。

3.隐式等待和显式等待的区别

        a.隐式等待是针对全局的,但更简单

        b.显式等待可以针对每个元素进行单独设置


四、元素滑动和拖拽

1.元素滑动

        a.swipe:参数是坐标点

driver.swipe(x1, y1, x2, y2, t)

        b.scroll:参数是元素

driver.scroll(起始元素,结束元素)

2.元素拖拽   

        a.drag_and_drop:参数是元素,将结束元素的位置拖动至起始位置

driver.drag_and_drop(起始元素,结束元素)

3.TouchAction

        a.将每个小步骤组合成一组动作

        b.几个常用方法

#轻敲
tap()
#抬起
release()
#按下
press()
#等待
wait()
#长按
longpress()
#移动
move_to()

几个动作组合在一起,按下某个控件后松开,然后使perform方法执行

TouchAction(driver).press(x,y).release().perform()

欢迎大家补充~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值