자바 + selenium 테스트 프레임 워 크 (테스트 구동) 버 전 진화 3
6018 단어 자바selenium테스트 프레임 워 크
이 절 은 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");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.