在现有框架中,我可以借助以下步骤正常启动单个浏览器:
1。 configuration.properties文件:给出了可执行驱动程序和URL的路径
chromedriverpath = src \ test \ resources \ drivers \ chromedriver.exe
url = someTestingURL
2。 ConfigFileReader类:读取配置文件
public static Properties properties;
private final String
propertyFilePath="src/test/resources/configurations/configuration.properties"
public ConfigFileReader(){
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader(propertyFilePath));
properties = new Properties();
try {
properties.load(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
} }
catch (FileNotFoundException e)
{
e.printStackTrace();
throw new RuntimeException("Config.properties not found at " + propertyFilePath);
public String getApplicationUrl() {
String url = properties.getProperty("url");
if(url != null) return url;
else throw new RuntimeException("url not specified in the Config.properties file.");
}
public String getDriverPath(){
String driverPath =properties.getProperty("chromedriverpath");
if(driverPath!= null) return driverPath;
else throw new RuntimeException("Chrome driverPath not
specified in the Config.properties file.");
}
}
3。 DriverType类:定义了不同的驱动程序
public enum DriverType {
FIREFOX,
CHROME,
INTERNETEXPLORER }
4。 EnvironmentType类:选择环境
public enum EnvironmentType {
LOCAL,//own system
REMOTE,//docker some other software }
4。 WebDriverManager类:选择驱动程序的代码
package managers;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import enums.DriverType;
import enums.EnvironmentType;
public class WebDriverManager {
private WebDriver driver;
private static DriverType driverType;
private static EnvironmentType environmentType;
private static final String CHROME_DRIVER_PROPERTY =
"webdriver.chrome.driver";
private static final String FIREFOX_DRIVER_PROPERTY = "webdriver.gecko.driver";
public static Properties reportportal = null;
public WebDriverManager() {
driverType = FileReaderManager.getInstance().getConfigReader().getBrowser();
environmentType = FileReaderManager.getInstance().getConfigReader().getEnvironment();
}
public WebDriver getDriver() {
if(driver == null) driver = createDriver();
return driver;
}
private WebDriver createDriver() {
switch (environmentType) {
case LOCAL : driver = createLocalDriver();
break;
case REMOTE : driver = createRemoteDriver();
break;
}
return driver;
}
private WebDriver createRemoteDriver() {
throw new RuntimeException("RemoteWebDriver is not yet implemented");
}
private WebDriver createLocalDriver() {
switch (driverType) {
/*case FIREFOX : driver = new FirefoxDriver();
break;*/
case CHROME :
System.setProperty(CHROME_DRIVER_PROPERTY, FileReaderManager.getInstance().getConfigReader().getDriverPath());
driver = new ChromeDriver();
break;
}
if(FileReaderManager.getInstance().getConfigReader().getBrowserWindowSize()) driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(FileReaderManager.getInstance().getConfigReader().getImplicitlyWait(), TimeUnit.SECONDS);
return driver;
}
public static void loadReportPoratlProperty() throws IOException {
reportportal = new Properties();
FileInputStream ip = new FileInputStream(
System.getProperty("user.dir") + "\\src\\test\\resources\\config\\reportportal.properties");
reportportal.load(ip);
}
public void closeDriver() {
driver.close();
driver.quit();
}
}
这是我为选择驱动程序所做的实际设置,并且能够使用下面的testng.xml文件执行
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="First Suite" >
<test name="Chrome Test" >
<classes>
<classname ="tests.report.runners.ReportRunner"></class>
</classes>
</test>
</suite>
我现在想要做的是:
例如:
public class Hooks {
@Before
public void beforeScenario(){
//Launch browser
//send url
System.out.println("This will run before the Scenario");
}
@After
public void afterScenario(){
//quit browser
System.out.println("This will run after the Scenario");
}
}
**`
那么,如何为URL和driversetup重构Hooks类?
`**