霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

技术分享 | 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 的元素定位页面:

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

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

⬇️ 你好呀,喜欢这篇文章的话烦请点个“赞”哦!大家的支持很重要~() PS:有问题可以联系我们~v ceshiren001

>>更多技术文章分享和免费资料领取

posted @   霍格沃兹测试开发学社  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示