写点什么

软件测试 | App 控件交互

  • 2023-02-17
    北京
  • 本文字数:2215 字

    阅读完需:约 7 分钟

在软件测试中,测试人员可以用 Appium 提供的大量的 API 去操作 App 页面及 App 页面上的节点,如点击、输入、滑动等操作。

1.常用的测试操作

(1)点击操作

在软件测试中,我们通常先获取到元素,然后通过测试脚本调用 click()方法来实现对这个元素的点击操作。示例 diamante 如下(Python 版和 Java 版)。

Python 版本

driver.find_element_by_id("home_search").click()
复制代码


Java 版本

driver.findElementById("home_search").click();
复制代码


(2)输入操作

测试使用的输入操作示例代码如下(Python 版和 Java 版)。


Python 版本

self.driver.find_element_by__id("search_input_text").send_keys("阿里巴巴")
复制代码


Java 版本

driver.findElementById("search_input_text").sendKeys("阿里巴巴");
复制代码


效果展示如图 5-16 所示。


(3)获取元素属性


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

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

图 5-17 是使用 Appium Inspector 获取到的元素属性信息。


我们在测试中可以使用获取 App 页面元素属性的方法来货物一些元素的属性信息。然后通过获取到的元素属性值进行断言,这样也可以获取到复选框是否被选中,或者获取到页面中某个元素是否可用等信息。


1)获取元素的 text 属性

获取元素的 text 属性值的代码如下(python 版和 Java 版)。

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")
复制代码


2)获取元素的 class 属性

获取元素的 class 属性的代码如下(Python 版和 Java 版)。

Python 版本

self.driver.find_element_by_xpath( '//*[@resource-id="com.xueqiu.android"]'). get_attribute('class')
复制代码


Java 版

driver.findElementByXPath("\ //*[@resourse-id=\"com.xueqiu.android\"]"\ .getAttribute(class));
复制代码


3)获取 resource-id 属性

获取元素的 resource-id 属性(API≥18 支持)的代码如下(Python 版和 Java 版)。

Python 版本

self.driver.find_element_by_xpath( '//*[@resoutce-id="com.xueqiu.android"]' ).get_attribute('resource-id')
复制代码


Java 版本

driver.findElementByXPath\   ("//*[@resource-id\"com.xueqiu.android\"]"\   .getAttribute("resource-id"));
复制代码


4)获取 content-desc 属性

获取元素 的 content-desc 属性的代码如下(Python 版和 Java 版)。

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");
复制代码


5)获取元素的其他属性

在测试中,我们也可以获取 App 页面元素的一些其他属性,通过元素的属性判断元素的状态,如某个元素是否可见、是否被选中、是否可用等,下面会介绍获取其他属性的演示代码(Python 版和 Java 版)。


Python 版

get_attribute('clickable')  #是否可点击get_attribute('checked')    #是否被选中get_attribute('displayed')  #是否显示get_attribute('enabled')  #是否可用
复制代码


Java 版本

getAttribute('clickable');  #是否可点击getAttribute('checked');    #是否被选中getAttribute('displayed');  #是否显示getAttribute('enabled');    #是否可用
复制代码

2.获取页面的 XML 结构

在测试中,我们获取页面的 XML 结构目的是用于页面数据的验证。另外,也可以通过分析页面的 XML 结构,辅助解决页面元素的定位问题。


通过使用 driver.page_source 可用获取页面的 XML 结构。


注:用 Selenium 获取的页面结构是 HTML 格式,Appium 使用 page_sourse 方法获取的页面结构是 XML 格式。


示例代码如下(Python 版和 Java 版)。


(1)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_sourse)...
复制代码


(2)Java 演示代码

import io.appium.java_client.android.AndroidDriver;...@Testpublic 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.printIn(driver.findElementByXPath(\     "//*[@resource-id=\"com.xueqiu.android\"]").getAttribute("class"));   //打印输出页面源代码   System.out.printIn(driver.getPageSource());}...
复制代码


上面的代码创建了一个测试方法,这个方法定位到页面的搜索框,然后向搜索框中输入内容。以 Python 代码为例,通过方法“get_attribute('class')"获取到 “搜索框” 这个元素的 class 属性,最后通过 “ page_source”获取页面的布局代码。

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | App控件交互_测试_测吧(北京)科技有限公司_InfoQ写作社区