多语言展示
当前在线:1823今日阅读:27今日分享:41

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

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

Appium

2

Eclipse

1 用例基本结构

编写测试用例时,测试用例务必要按照Appium的框架结构来编写。主要由@Before、@Test、@After三部分组成。实例:public class MainTest {private AndroidDriver driver;@Before    public void setUp() throws Exception {   //初始化appium        File classpathRoot = new File(System.getProperty('user.dir'));        File appDir = new File(classpathRoot, 'apk');        File app = new File(appDir, 'PhoneWo-0.6.70-3-0-test-hz.apk');        DesiredCapabilities capabilities = new DesiredCapabilities();        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 = new AndroidDriver(new URL('http://127.0.0.1:4723/wd/hub'),capabilities);    }     @After    public void tearDown() throws Exception {if (driver != null) {driver.quit();}    }    @Testpublic void PhoneplusTest() throws Exception {//执行启动引导测试System.err.println('引导模块begin.......................');new RegAndLogin().GuideTest();System.err.println('引导模块over........................');}} 从以上代码来看:@Before后面的代码块主要是初始化测试环境的脚本,在执行测试用例之前运行@Test后面的代码块主要是执行测试用例@After后面的代码块主要是处理执行测试用例后的收尾工作 @Before、@Test、@After三个标记在同一个项目中是唯一的。

2 通过name定位

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

3 通过className定位

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

4 通过ID定位

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

推荐信息