订阅本栏目 RSS您所在的位置: 深山工作室 > python > 正文

Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素

2024/9/18 14:33:40 字体: 浏览 67

APP移动端自动化测试】第三节.UIAutomatorViewer元素定位API操作

(1)应用场景
定位元素的时候必须根据元素的相关特征来进行定位,而UIAutomatorViewer就是用来获取元素特征的。
(2)简介
UlAutomatorViewer用来扫描和分析Android应用程序的UI控件的工具。
(3)使用步骤
1.进入SDK目录下的目录
mac在tools/bin目录下,打开uiautomatorviewero
windows在 tools目录下,打开uiautomatorviewer.bat
2.电脑连接真机或打开android模拟器
3.启动待测试app
4.点击uiautomatorviewer的左上角Device Screenshot (从左数第二个按钮)
5.点击希望查看的控件
6.查看右下角Node Detail相关信息
(4)示例
查看《设置》应用程序右上角"放大镜”按钮的"resource-id".
    实现步骤:
    1.打开uiautomatorviewer
    2.打开android模拟器
    3.启动《设置》应用程序
    4.点击Device Screenshot按钮
    5.点击"放大镜”按钮
    6.查看Node Detail中的"resource-id”信息

    注意点:
    uiautomatorviewer注意点
    1.命令行窗口不要关闭
    2.如果uiautomatorviewer 闪退
          更换jdk为1.8
    3.点击第二个按钮的时候报错
          重启adb
              adb kill-server
              adb start-server


## Selenium元素定位
Selenium是一个强大的Web应用程序测试工具,也支持Android原生应用测试。通过Selenium,我们可以根据不同的属性来定位页面上的元素,比如ID、类名和XPath表达式等。

### 单个元素定位
#通过id定位一个元素
  driver.find_element_by_id('id_value').click()
 
#通过class_name定位一个元素
  driver.find_element_by_class_name('class_value').send_keys('hello')
 
#通过xpath定位一个元素
  driver.find_element_by_xpath('//[@content-desc="收起"]').click()

其它示例
1.driver.find_element_by_id("com.android.settings:id/search").click()
2.driver.find_element_by_class_name(" android.widget.EditText").send_keys( "hello")
3.driver.find_element_by_xpath(" / /*[@content-desc='收起"]").click()
总结:
1. find_element_by_id方法中传入的是Node Detail信息中的resource-id
2. find_element_by_class_name方法中传入的是 Node Detail 信息中的class
3. find element bv xpath方法中传入的是Node Detail信息中的xpath表达式


### 一组元素定位
当需要定位多个具有相同特征的元素时,可以使用以下方法:
- **通过ID定位多元素**:
  titles = driver.find_elements_by_id('com.android.settings:id/title')
  for title in titles:
      print(title.text)
     
- **通过Class Name定位多元素**:
  text_views = driver.find_elements_by_class_name('android.widget.TextView')
  for text_view in text_views:
      print(text_view.text)
     
- **通过XPath定位多元素**:
  elements = driver.find_elements_by_xpath("//*[contains(@text, '设')]")
  for element in elements:
      print(element.text)
     
### 元素等待
由于网络延迟等因素,有时页面元素不会立即加载完毕。为此,Selenium提供了两种等待机制——隐式等待和显式等待,以避免因元素未加载完成而导致的脚本失败。

- **隐式等待**:设置一个全局超时时间,在此时间内如果找不到元素,则抛出异常。
  driver.implicitly_wait(10)  # 等待10秒
 
- **显式等待**:针对特定条件设置更精确的等待时间,超过指定时间后抛出异常。
  from selenium.webdriver.support.ui import WebDriverWait
  wait = WebDriverWait(driver, 10)
  search_button = wait.until(lambda x: x.find_element_by_xpath("//*[contains(@content-desc, '收起')]"))
  search_button.click()

前一页:没有了
相关阅读
asp简易论坛制作教程(三)——数据库的设置
利用CSS制作的网站中新闻文章列表效果
微信小程序发送给朋友与分享到朋友圈显示灰色的但是按钮分享可以使用
兼容pc、移动端用js实现复制内容到剪切板(支持苹果safari浏览器)
vue uni-app判断空字符串/null/undefined或者有误字段
防网页机器人随处发帖
jquery实现下拉加载更多
旅行社手机网站模板1
共有0条关于《Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素》的评论
发表评论
正在加载评论......
返回顶部发表评论
呢 称:
表 情:
内 容:
评论内容:不能超过 1000 字,需审核,请自觉遵守互联网相关政策法规。
验证码: 验证码 
网友评论声明,请自觉遵守互联网相关政策法规。

您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。

更多信息>>栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
DIV+CSS
HTML
python
更多>>同类信息
Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
python通过代码修改pip下载源让下载库飞起
python里面requests.post返回的res.text还有其它的吗
windows7环境下安装配置jdk
python对微信操作要用到这两个库wxpy与itchat
8种Python字符串拼接的方法,你知道几种
更多>>最新添加文章
dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
抖音直播音挂载小雪花 懂车帝小程序
javascript获取浏览器指纹可以用来做投票
火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法
在Android、iOS、Windows、MacOS中微信小程序的文件存放路径
python通过代码修改pip下载源让下载库飞起
python里面requests.post返回的res.text还有其它的吗
更多>>随机抽取信息
利用fso判断文件是否存在
实现windows关机效果代码
深山行者留言系统V2.2 (简称留言板V2.2)
详谈CSS设计中import与link的区别所在
网站SEO优化应该注意的14点重要事项
CSS编写过程中常见的10个错误以及解决方法