技术分享 | app自动化测试(Android)–App 控件交互

简介: 常用操作

常用操作

点击操作

通常获取到元素之后,可以调用 click() 方法来实现对这个元素的点击操作。示例代码如下:

  • python 版本
driver.find_element_by_id("home_search").click()
  • Java 版本
driver.findElementById("home_search").click();

输入操作

输入操作示例代码如下:

  • python 版本
self.driver.find_element_by_id("search_input_text").send_keys("阿里巴巴")
  • Java 版本
driver.findElementById("search_input_text").sendKeys("阿里巴巴");

效果展示:

获取元素属性

通过获取到的元素属性信息,可以进行页面数据的验证(断言),或者用于分支判断。

元素有很多属性信息,无论是使用 uiautomatorviewer 还是使用 Appium Inspector,元素的属性信息一般都会展示在页面的右下方。

如下图是 Appium Inspector 的元素定位页面:

1080×900 143 KB

可以使用获取元素的属性的方法来获取这些属性信息。然后通过获取到的元素属性值进行断言,也可以获取到复选框是否被选中的状态,或者获取某个元素是否可用等信息。

获取 TEXT 属性

返回元素的 text 的属性值,用法如下:

  • Python 版本
self.driver.find_element_by_xpath(
    '//*[@resource-id="com.xueqiu.android'
    ).get_attribute('text')
  • Java 版本
driver.findElementByXPath\
    "//*[@resource-id=\"com.xueqiu.android\"]").\
    getAttribute("text");

获取 CLASS 属性

返回元素的 class 的属性值,用法如下:

  • Python 版本
self.driver.find_element_by_xpath(
    '//*[@resource-id="com.xueqiu.android"]'
    ).get_attribute('class')
  • Java 版本
driver.findElementByXPath("\
    //*[@resource-id=\"com.xueqiu.android\"]")\
    .getAttribute("class");

获取 RESOURCE-ID 属性

返回 resource-id 的属性值(API≥18 支持),用法如下:

  • Python 版本
self.driver.find_element_by_xpath(
    '//*[@resource-id="com.xueqiu.android"]'
    ).get_attribute('resource-id')
  • Java 版本
driver.findElementByXPath\
    ("//*[@resource-id=\"com.xueqiu.android\"]")\
    .getAttribute("resource-id");

获取 CONTENT-DESC 属性

返回元素的 content-desc 的属性值,用法如下:

  • Python 版本
self.driver.find_element_by_xpath(
    '//*[@resource-id="com.xueqiu.android'
    ).get_attribute('content-desc')
  • Java 版本
driver.findElementByXPath\
    ("//*[@resource-id=\"com.xueqiu.android\"]")\
    .getAttribute("content-desc");

获取元素的其它属性

也可以获取到元素的一些其它的属性,比如这个元素是否可见,是否被选中,是否可用等,下面介绍这些属性值的获取:

  • python 版本
get_attribute('clickable') # 是否可点击
get_attribute('checked') # 是否被选中
get_attribute('displayed') # 是否显示
get_attribute('enabled') # 是否可用
  • Java 版本
getAttribute("clickable");  // 是否可点击
getAttribute("checked");  //是否被选中
getAttribute("displayed");  // 是否显示
getAttribute("enabled");  // 是否可用

获取页面的XML结构

获取页面的 XML 结构,大部分情况是用于页面数据的验证。另外也可以通过分析页面的结构,辅助定位问题。

通过 driver.page_source 可以获取页面的 XML 结构。与 Selenium 输出的 HTML 格式不一样,Appium 的 page_source 是 XML 格式。

示例代码如下:

PYTHON 版本

from appium import webdriver
...
def test_search(self):
    # 点击搜索
    self.driver.find_element_by_id(
        "com.xueqiu.android:id/tv_search").click()
    # 输入内容“alibaba”
    self.driver.find_element_by_id(
        "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
    # 打印输出 class 属性
    print(self.driver.find_element_by_xpath(
        '//*[@resource-id="com.xueqiu.android')
            .get_attribute('class'))
    # 打印输出页面源码
    print(self.driver.page_source)
...

JAVA 版本

import io.appium.java_client.android.AndroidDriver;
...
@Test
public void searchTest(){
    // 点击搜索
    driver.findElement(By.id("com.xueqiu.android:id/tv_search")).click();
    // 输入内容“alibaba”
    driver.findElement(By.id("com.xueqiu.android:id/search_input_text"))\
        .sendKeys("alibaba");
    // 打印输出 class 属性
    System.out.println(driver.findElementByXPath(\
        "//*[@resource-id=\"com.xueqiu.android\"]").getAttribute("class"));
    // 打印输出页面源码
    System.out.println(driver.getPageSource());
}
...

上面的代码创建了一个测试方法,先定位到搜索框,向搜索框中输入内容,通过获取属性方法获取到搜索结果的 class 属性,最后获取页面的布局源码。


目录
打赏
0
1
1
0
195
分享
相关文章
移动应用开发与操作系统的交互:深入理解Android和iOS
在数字时代,移动应用成为我们日常生活的一部分。本文将深入探讨移动应用开发的核心概念、移动操作系统的工作原理以及它们如何相互作用。我们将通过实际代码示例,展示如何在Android和iOS平台上创建一个简单的“Hello World”应用,并解释其背后的技术原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
664 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
116 2
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
154 12
自动化测试框架的设计与实现探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第26天】本文旨在探讨自动化测试框架的设计原则、核心组件和实现方法。通过分析自动化测试的优势,我们深入讨论了框架设计的关键考虑因素,包括模块化、可重用性、可扩展性和易维护性。文章还介绍了如何利用流行的测试工具和编程语言来实现一个高效的自动化测试框架,并通过实例展示了框架的应用。
Android项目架构设计问题之实现交互响应的结构化处理如何解决
Android项目架构设计问题之实现交互响应的结构化处理如何解决
29 0
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
构建未来:Android与IoT设备的无缝交互深入探索软件自动化测试的未来趋势
【5月更文挑战第30天】在物联网(IoT)技术快速发展的当下,Android系统因其开放性和广泛的用户基础成为了连接智能设备的首选平台。本文将探讨如何通过现代Android开发技术实现智能手机与IoT设备的高效、稳定连接,并分析其中的挑战和解决方案。我们将深入挖掘Android系统的底层通信机制,提出创新的交互模式,并通过实例演示如何在Android应用中集成IoT控制功能,旨在为开发者提供一套可行的指导方案,促进IoT生态系统的进一步发展。

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
    94036
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
    109
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
    21
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
    8
  • 5
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    20
  • 6
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
    11
  • 7
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    12
  • 8
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
    5
  • 9
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    5
  • 10
    用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
    46