自动化测试工具Appium入门--用例编写及元素定位

2025-05-23 17:10:22

编写Appium测试用例时,主要工作其实在编写代码和定位元素。对于重复的代码可以通过封装代码块成方法来调用。但元素定位却是一个苦力活,因为同一个页面可能存在重复的类似的元素,那么怎么定位就成了一大问题。

工具/原料

Appium

Eclipse

1 用例基本结构

1、编写测试用例时,测试用例务必要按照Appium的框架结构来编写。主要由@Before、@Test、@After三部分组成。实例:publicclassMainTest{privateAndroidDriverdriver;@BeforepublicvoidsetUp()throwsException{//初始化appiumFileclasspathRoot=newFile(System.getProperty("user.dir"));FileappDir=newFile(classpathRoot,"apk");Fileapp=newFile(appDir,"PhoneWo-0.6.70-3-0-test-hz.apk");DesiredCapabilitiescapabilities=newDesiredCapabilities();capabilities.setCapability("platformName","Android");capabilities.setCapability("deviceName","");//capabilities.setCapability("device","Android");capabilities.setCapability(CapabilityType.BROWSER_NAME,"");capabilities.setCapability(CapabilityType.VERSION,"4.4");capabilities.setCapability(CapabilityType.PLATFORM,"WINDOWS");capabilities.setCapability("app",app.getAbsolutePath());capabilities.setCapability("app-package","cn.langma.phonewo");capabilities.setCapability("app-activity",".PPGuideUI");driver=newAndroidDriver(newURL("http://127.0.0.1:4723/wd/hub"),capabilities);}@AfterpublicvoidtearDown()throwsException{if(driver!=null){driver.quit();}}@TestpublicvoidPhoneplusTest()throwsException{//执行启动引导测试System.err.println("引导模块begin.......................");newRegAndLogin().GuideTest();System.err.println("引导模块over........................");}}从以上代码来看:@Before后面的代码块主要是初始化测试环境的脚本,在执行测试用例之前运行@Test后面的代码块主要是执行测试用例@After后面的代码块主要是处理执行测试用例后的收尾工作@Before、@Test、@After三个标记在同一个项目中是唯一的。

2 通过name定位

1、通过控件的text属性定位控件是最常用的一种方法:By.name方法实例1:WebElementdownload=driver.findElement(By.name("下载安装"));该方法通过直接查找当前界面上所有的控件来比较每个控件的text属性是否如预期值来定位控件。实例2:List<WebElement>loginList=driver.findElements(By.Name("登录"));loginList.get(1).click();此方法跟实例类似,首先获取所控件中text属性相同的,然后取其中一个。

3 通过className定位

1、通过此方法定位控件存在的一个问题是很容易发生重复。实例1:WebElementledit=driver.findElement(By.className("android.widget.EditText"));ledit.sendKeys("21085");实例2:List<WebElement>ledit=driver.findElements(By.className("android.widget.EditText"));ledit.get(0).sendKeys("123456");

4 通过ID定位

1、在AndroidAPILevel18及其以上的版本增加了一个Android控件的属性ResourceId,所以要注意在使用这种方法之前先确保你的目标测试设备使用的都是APILevel18以上的版本。实例:WebElementel=driver.findElement(By.id("cn.langma.phonewo:id/user_name"));除了以上常用的方法外,还有xpath等,这里不再一一说明了。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢