首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术分享 | app自动化测试(Android)--App 控件交互

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

作者头像
Hogwarts_测试
发布2022-06-14 10:21:01
发布2022-06-14 10:21:01
5810
举报

原文链接

常用操作

点击操作

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

  • python 版本
代码语言:txt
复制
driver.find\_element\_by\_id("home\_search").click()
  • Java 版本
代码语言:txt
复制
driver.findElementById("home\_search").click();
输入操作

输入操作示例代码如下:

  • python 版本
代码语言:txt
复制
self.driver.find\_element\_by\_id("search\_input\_text").send\_keys("阿里巴巴")
  • Java 版本
代码语言:txt
复制
driver.findElementById("search\_input\_text").sendKeys("阿里巴巴");

效果展示:

获取元素属性

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

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

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

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

获取 TEXT 属性

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

  • Python 版本
代码语言:txt
复制
self.driver.find\_element\_by\_xpath(

    '//\*[@resource-id="com.xueqiu.android'

    ).get\_attribute('text')
  • Java 版本
代码语言:txt
复制
driver.findElementByXPath\

    "//\*[@resource-id=\"com.xueqiu.android\"]").\

    getAttribute("text");
获取 CLASS 属性

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

  • Python 版本
代码语言:txt
复制
self.driver.find\_element\_by\_xpath(

    '//\*[@resource-id="com.xueqiu.android"]'

    ).get\_attribute('class')
  • Java 版本
代码语言:txt
复制
driver.findElementByXPath("\

    //\*[@resource-id=\"com.xueqiu.android\"]")\

    .getAttribute("class");
获取 RESOURCE-ID 属性

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

  • Python 版本
代码语言:txt
复制
self.driver.find\_element\_by\_xpath(

    '//\*[@resource-id="com.xueqiu.android"]'

    ).get\_attribute('resource-id')
  • Java 版本
代码语言:txt
复制
driver.findElementByXPath\

    ("//\*[@resource-id=\"com.xueqiu.android\"]")\

    .getAttribute("resource-id");
获取 CONTENT-DESC 属性

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

  • Python 版本
代码语言:txt
复制
self.driver.find\_element\_by\_xpath(

    '//\*[@resource-id="com.xueqiu.android'

    ).get\_attribute('content-desc')
  • Java 版本
代码语言:txt
复制
driver.findElementByXPath\

    ("//\*[@resource-id=\"com.xueqiu.android\"]")\

    .getAttribute("content-desc");
获取元素的其它属性

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

  • python 版本
代码语言:txt
复制
get\_attribute('clickable') # 是否可点击

get\_attribute('checked') # 是否被选中

get\_attribute('displayed') # 是否显示

get\_attribute('enabled') # 是否可用
  • Java 版本
代码语言:txt
复制
getAttribute("clickable");  // 是否可点击

getAttribute("checked");  //是否被选中

getAttribute("displayed");  // 是否显示

getAttribute("enabled");  // 是否可用

获取页面的XML结构

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

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

示例代码如下:

PYTHON 版本
代码语言:txt
复制
from appium import webdrive

...

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 版本
代码语言:txt
复制
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 属性,最后获取页面的布局源码。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用操作
    • 点击操作
    • 输入操作
    • 获取元素属性
  • 获取页面的XML结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档