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

简介: 本文章是分享关于app自动化测试(Android)--App 控件交互相关的内容 ,有java和python 2个版本

常用操作

点击操作

通常获取到元素之后,可以调用 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 的元素定位页面:

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

获取 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 属性,最后获取页面的布局源码。

相关文章
|
2月前
|
API 数据安全/隐私保护 开发者
使用MechanicalSoup进行网页自动化交互
使用MechanicalSoup进行网页自动化交互
41 2
|
2月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
175 0
安卓项目:app注册/登录界面设计
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
85 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3月前
|
存储 开发工具 Android开发
使用.NET MAUI开发第一个安卓APP
【9月更文挑战第24天】使用.NET MAUI开发首个安卓APP需完成以下步骤:首先,安装Visual Studio 2022并勾选“.NET Multi-platform App UI development”工作负载;接着,安装Android SDK。然后,创建新项目时选择“.NET Multi-platform App (MAUI)”模板,并仅针对Android平台进行配置。了解项目结构,包括`.csproj`配置文件、`Properties`配置文件夹、平台特定代码及共享代码等。
244 2
|
3月前
|
XML Android开发 数据格式
🌐Android国际化与本地化全攻略!让你的App走遍全球无障碍!🌍
在全球化背景下,实现Android应用的国际化与本地化至关重要。本文以一款旅游指南App为例,详细介绍如何通过资源文件拆分与命名、适配布局与方向、处理日期时间及货币格式、考虑文化习俗等步骤,完成多语言支持和本地化调整。通过邀请用户测试并收集反馈,确保应用能无缝融入不同市场,提升用户体验与满意度。
118 3
|
3月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
|
2月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
338 0
|
3月前
|
XML 数据库 Android开发
10分钟手把手教你用Android手撸一个简易的个人记账App
该文章提供了使用Android Studio从零开始创建一个简单的个人记账应用的详细步骤,包括项目搭建、界面设计、数据库处理及各功能模块的实现方法。
|
7天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
34 19
|
7天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
31 14

热门文章

最新文章