JavaApp自动化测试系列[v1.0.0][Appium自启动]

实际上每次测试都手动启动Appium服务并非合理的,当我们将测试代码放到DevOps流程的下游,很难想象还要手动启动Appium服务,实际上可以使用AppiumDriverLocalService在代码中来完成Appium服务的启动和关闭

package com.davieyang.base;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import java.net.URL;

import java.util.logging.Logger;
import org.apache.log4j.PropertyConfigurator;

import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.ITestContext;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;


import io.appium.java_client.service.local.AppiumDriverLocalService;
import io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException;
import java.net.MalformedURLException;


public class BaseActivityII {
    public static Logger log = Logger.getLogger(BaseActivity.class.getName());
    AndroidDriver<AndroidElement> driver;
    private static AppiumDriverLocalService service;

    @BeforeClass
    public void startTest(ITestContext context) throws MalformedURLException{
        log.info("--------启动Appium服务-------");
        PropertyConfigurator.configure("config/log4j.properties");
        service = AppiumDriverLocalService.buildDefaultService();
        service.start();
        if (service == null || !service.isRunning()){
            throw new AppiumServerHasNotBeenStartedLocallyException("Appium server node is not started");
        }
        log.info("--------测试开始----------");
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability("deviceName", "Remi 3");
        cap.setCapability("udid", "claeae297d72");
        cap.setCapability("platformVersion", "5.1.1");
        cap.setCapability("platformName", "Android");
        cap.setCapability("appPackage", "io.selendroid.testapp");
        cap.setCapability("appActivity", ".HomeScreenActivity");
        cap.setCapability("unicodeKeyboard", "True");
        cap.setCapability("noSign", "True");
        driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    }

    @AfterClass
    public void endTest(){
        log.info("-----测试结束-----");
        driver.quit();
        if (service !=null){
            service.stop();
        }
    }

    public AndroidDriver<AndroidElement> getDriver(){
        return driver;
    }
}

猜你喜欢

转载自blog.csdn.net/dawei_yang000000/article/details/108313451