自动化测试工具Appium入门--用例编写及元素定位
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();
}
}
@Test
public void PhoneplusTest() throws Exception {
//执行启动引导测试
System.err.println("引导模块begin.......................");
new RegAndLogin().GuideTest();
System.err.println("引导模块over........................");
}
}
从以上代码来看:
@Before后面的代码块主要是初始化测试环境的脚本,在执行测试用例之前运行
@Test后面的代码块主要是执行测试用例
@After后面的代码块主要是处理执行测试用例后的收尾工作
@Before、@Test、@After三个标记在同一个项目中是唯一的。
1、通过控件的text属性定位控件是最常用的一种方法:By.name方法
实例1:
WebElement download = driver.findElement(By.name("下载安装"));
该方法通过直接查找当前界面上所有的控件来比较每个控件的text属性是否如预期值来定位控件。
实例2:
List <WebElement> loginList = driver.findElements(By.Name("登录"));
loginList.get(1).click();
此方法跟实例类似,首先获取所控件中text属性相同的,然后取其中一个。
1、通过此方法定位控件存在的一个问题是很容易发生重复。
实例1:
WebElement ledit = 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");
1、在Android API Level18及其以上的版本增加了一个Android控件的属性ResourceId, 所以要注意在使用这种方法之前先确保你的目标测试设备使用的都是API Level 18以上的版本。
实例:
WebElement el = driver.findElement(By.id("cn.langma.phonewo:id/user_name"));
除了以上常用的方法外,还有xpath等,这里不再一一说明了。