자바 + selenium 테스트 프레임 워 크 (테스트 구동) 버 전 진화 3

자바 + selenium 테스트 프레임 워 크 (테스트 구동) 버 전 진화 3
이 절 은 properity 파일 을 사용 하여 프로그램의 설정 을 관리 하고 Test 의 기본 클래스 를 완성 하여 보조 테스트 에 사용 합 니 다.
WebDriver 초기 화 코드 추가
프로젝트 에 프로필 추가
프로젝트 의 resource 아래 설정 파일 (selenium - vars. properties) 을 추가 합 니 다.
#WebDriverTypes or Browser to be tested: InternetExplorer  Firefox   Chrome
webdriver.type=Firefox

#Path of ChromeDriver 
webdriver.chrome.driver.path=lib/chromedriver.exe

#Path of IEDriver
webdriver.ie.driver.path=lib/IEDriverServer.exe

설정 읽 기 및 저장
그리고 ConfigurationSettings 로 이 설정 변 수 를 저장 합 니 다.
public class ConfigurationSettings {

        private static Properties props = null;

        private final static String SELENIUM_CONFIG="selenium-vars.properties";

        static{
            try {
                props = new Properties();
                InputStream in = ConfigurationSettings.class.getClassLoader().getResourceAsStream(SELENIUM_CONFIG);
                props.load(in);
            } catch (Exception e) {
                throw new RuntimeException("ConfigurationSettings initialize failed.", e);
            }
        }

        public static String getProperty(String propertyName){
            return props.getProperty(propertyName);
        }

        /**
         * WebDriver  
         */
        public static final String WEBDRIVER_TYPE = getProperty("webdriver.type").trim();

        /**
         * IEdriver   
         */
        public static final String WEBDRIVER_IE_DRIVER_PATH = getProperty("webdriver.ie.driver.path").trim();

        /**
         * Chromedriver   
         */
        public static final String WEBDRIVER_CHROME_DRIVER_PATH  = getProperty("webdriver.chrome.driver.path").trim();

}

DriverFactory 로 초기 화 완료
다음 드라이버 초기 화 완료:
public class DriverFactory {
    private static DriverType DEFAULT_DRIVER_TYPE = DriverType.Firefox;

    protected Logger logger = LoggerFactory.getLogger(getClass());

    private static DriverFactory instance = null;

    static {
        instance = new DriverFactory();
    }

    public static DriverFactory getInstance() {
        return instance;
    }

    public WebDriver getDriver() {
        DriverType type = DEFAULT_DRIVER_TYPE;
        try {
            type = Enum.valueOf(DriverType.class, ConfigurationSettings.WEBDRIVER_TYPE);
        }
        catch (Exception ex) {
            logger.warn("Parse WebDriver.Type failed, use default driver type: " + DEFAULT_DRIVER_TYPE.name());
            logger.debug(ex.getMessage(), ex);
        }
        return type.getDriver();
    }
}

대응 하 는 DriverType 에서 실제 드라이버 초기 화 를 담당 합 니 다.
public enum DriverType {
    InternetExplorer {

        @Override
        public WebDriver getDriver() {

            if (!StringUtils.isEmpty(ConfigurationSettings.WEBDRIVER_IE_DRIVER_PATH)) {
                System.setProperty(InternetExplorerDriverService.IE_DRIVER_EXE_PROPERTY,ConfigurationSettings.WEBDRIVER_IE_DRIVER_PATH);
            }

            DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
            ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

            return new InternetExplorerDriver(ieCapabilities);
        }
    },
    Firefox {
        @Override
        public WebDriver getDriver() {
            return new FirefoxDriver();
        }
    },
    Chrome {
        @Override
        public WebDriver getDriver() {

            if (!StringUtils.isEmpty(ConfigurationSettings.WEBDRIVER_CHROME_DRIVER_PATH)) {
                System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY,ConfigurationSettings.WEBDRIVER_CHROME_DRIVER_PATH);
            }
            return new ChromeDriver();
        }
    };
    public abstract WebDriver getDriver();
}

TestBase 완료
public abstract class TestBase {
    protected Logger logger = LoggerFactory.getLogger(getClass());
    protected WebDriver driver = null;

    /**
     *        
     * @param seconds
     */
    public void sleep(int seconds) {
        try {
            TimeUnit.SECONDS.sleep(seconds);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


    @BeforeClass(alwaysRun = true)
    public void setUpTestBase(ITestContext testContext) {
        try{
            driver = DriverFactory.getInstance().getDriver();
         } catch(Exception e ) {
             quitDriver();
             Assert.fail("SetUp failed.", e);
         }
    }


    @AfterClass
    public void quitDriver() {
        try{
            if(driver != null)
                driver.quit();
        }   finally {
            driver = null;
        }
    }

}

데모 프로그램
public class BaiduMainBaseTest extends TestBase {

    BaiduMainPage page = null;

    @BeforeMethod
    public void initPage() {
        String path = "http://www.baidu.com/";
        page = new BaiduMainPage(driver);
        page.openAndWait(path);
        PageFactory.initElements(driver, page);
    }

    @Test
    public void testSearch(){
        String text="apple";
        page.SearchText(text);
        sleep(1);
        System.out.println(driver.getTitle());
        Assert.assertTrue(driver.getTitle().contains(text));
        System.out.println(page.getCurrentUrl());
    }

    @Test
    public void testnews(){
        System.out.println(page.getCurrentUrl());

        page.clickNewsIndex();
        page.sleep(1);
        System.out.println(page.getCurrentUrl());
        Assert.assertTrue(page.getCurrentUrl().contains("news.baidu.com"));
    }

}

페이지 대기 시간 증가
/**
 *     ,       。
 * @param url
 */
public void openAndWait(String url) {
    Selenium selenium = new WebDriverBackedSelenium(driver,url);
    driver.get(url);
    selenium.waitForPageToLoad("5000");
}

좋은 웹페이지 즐겨찾기