一、场景:
现在有一个app主页,主页有100个超链接,可以进入子页面P1~P100,如果需要对这100个页面做自动测试,需要怎样写自动化脚本?
二、方案:
1、每个子页面写一个脚本(此处为class),分别实现启动主页+进入子页面测试。
优点:代码逻辑简单
缺点:启动主页的代码要重复粘贴100次,存在重复和冗余,管理维护很不方便。
2.100个子页面放到一个脚本(class),实现启动主页+进入P1测试+退回主页+进入P2测试。。。
优点:没有代码冗余
缺点:对退回主页的稳定性依赖过高,一旦某个页面无法退出主页,整个脚本无法继续运行。
增加了退回主页的测试代码*100(如果在测试用例范围内,则可忽略该问题)。
此外所有测试页面代码放到一个class,管理维护不太友好。
3.启动页面封装成一个class,每个子页面写一个脚本(此处为class),仅实现进入子页面测试
优点:代码逻辑简单、没有代码冗余,管理维护方便
缺点:和方案1类似,对Appium启动APP的稳定性有一定依赖,因为需要启动(可能包含关闭)应用100次。
综合看来,方案3更适合解决主页需要多次进入子页面的冗余问题。
三、示例:
public class OpenAPP{
public static AppiumDriver driver;
/**
* @param args
* @throws Exception
*/
//打开应用
//原文链接https://blog.csdn.net/weixin_51380973
public AppiumDriver Android_Settings() throws Exception {
// TODO Auto-generated method stub
DesiredCapabilities cb = new DesiredCapabilities();
cb.setCapability("noReset", true);
cb.setCapability("platformName","Android");
cb.setCapability("deviceName","");
cb.setCapability("platformVersion", "6.0");
cb.setCapability("appPackage", "com.android.settings");
cb.setCapability("appActivity", ".Settings");
cb.setCapability("newCommandTimeout", 180);
driver= new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),cb);
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
return driver;
}
}
public class testPage1 {
public static AppiumDriver driver;
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//原文链接https://blog.csdn.net/weixin_51380973
OpenAPP open_app=new OpenAPP();
driver=open_app.Android_Settings();
int width=driver.manage().window().getSize().width;
int height=driver.manage().window().getSize().height;
driver.swipe(width / 2, height * 9 / 10, width / 2, height / 10, 80);
Thread.sleep(1000);
WebElement about_device=driver.findElement(By.name("关于设备"));
about_device.click();
}
}