在软件测试中,测试人员可以用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("阿里巴巴");
(3)获取元素属性
我们进行软件测试时,通过获取到的元素属性信息,可以进行页面数据的验证(断言),或者用于分支判断。
元素有很多属性信心,无论是使用UiAutomator还是使用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;
...
@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.printIn(driver.findElementByXPath(\
"//*[@resource-id=\"com.xueqiu.android\"]").getAttribute("class"));
//打印输出页面源代码
System.out.printIn(driver.getPageSource());
}
...
上面的代码创建了一个测试方法,这个方法定位到页面的搜索框,然后向搜索框中输入内容。以Python代码为例,通过方法“get_attribute('class')"获取到 “搜索框” 这个元素的class属性,最后通过 “ page_source”获取页面的布局代码。
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
全套资料获取方式:点击下方小卡片自行领取即可