前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium系列|Appium测试框架搭建(二)

Appium系列|Appium测试框架搭建(二)

作者头像
测试邦
发布2019-07-24 11:34:09
4970
发布2019-07-24 11:34:09
举报
文章被收录于专栏:测试邦测试邦

Page管理类创建

上一个小节已经创建了三个Page类,每个应用里会有很多个Page类,Page类多的话要获取到需要的Page类就比较麻烦,这时候可以新建一个用来管理各个page类的类,后续 通过这个入口来获取需要的Page类主要就比较简洁,可以在common的包下新建应Page的管理类,如命名成PageHelper,具体的代码如下:

代码语言:javascript
复制
package appium.common;

import appium.pages.PageCommon;
import appium.pages.PageLogin;
import appium.pages.PageMySettings;

public class PageHelper {
   private Helper helper;
   private PageCommon pageCommon;
   private PageLogin pageLogin;
   private PageMySettings pageMySettings;

   public PageHelper(Helper helper){
       this.helper = helper;
   }

   public PageCommon getPageCommon() {
       if(pageCommon == null){
           pageCommon = new PageCommon(helper);
       }
       return pageCommon;
   }

   public PageLogin getPageLogin() {
       if(pageLogin == null){
           pageLogin = new PageLogin(helper);
       }
       return pageLogin;
   }

   public PageMySettings getPageMySettings() {
       if(pageMySettings == null){
           pageMySettings = new PageMySettings(helper);
       }
       return pageMySettings;
   }

}

后续每新建一个Page类记得来这个类里面添加一个获取该Page类的方法即可。

测试父类抽取

每个测试脚本的setUp和tearDown都是相同的,因此可以将这些共有的部分放到一个Java的父类里,这样子类只要继承这个父类就自动拥有了这些共有的方法,然后在父类里也可以给Helper和PageHelper进行初始化,然后只暴露PageHelper的对象引用给所有的测试子类引用即可,这样每个测试子类就都会遵循POP模式,具体实现如下:

代码语言:javascript
复制
package appium.common;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;

import java.io.File;
import java.net.URL;

public class BasicTestCase {
   private AppiumDriver driver;
   private Helper helper;
   public PageHelper pageHelper;

   @BeforeMethod
   public void setUp() throws Exception {
       File app = new File(System.getProperty("user.dir"), "AUT/osc.apk");
       DesiredCapabilities capabilities = new DesiredCapabilities();
       capabilities.setCapability("deviceName", "My Android Device");
       capabilities.setCapability("app", app.getAbsolutePath());
       capabilities.setCapability("appPackage", "net.oschina.app");
       capabilities.setCapability("appActivity", "net.oschina.app.AppStart");
       capabilities.setCapability("noReset", true);
       capabilities.setCapability("unicodeKeyboard", true);
       driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
       helper = new Helper(driver);
       pageHelper = new PageHelper(helper);
   }


   @AfterMethod
   public void tearDown() throws Exception {
       driver.quit();
   }

}

这样后续每个测试脚本只要extends这个父类,然后关注具体的脚本实现即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试邦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Page管理类创建
  • 测试父类抽取
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档