[英]How to create a same instance for multiple classes in selenium webDriver
我有一個基本的WebDriver類,如果我在類中創建了構造函數,則在其中創建了一個接口以進行所有實現
public class Base {
public InterfaceClass driver;
public void setDriver(InterfaceClass driver){
this.driver = driver;
}
}
public class Seleniumclass implements InterfaceClass {
private WebDriver driver;
public void initiTest(){
Browser initialisation
}
}
public interface InterfaceClass {}
兩個類:第一個瀏覽器打開的實例必須通過第二個類傳遞-如何傳遞它?
public class firstclass extends HomePageComponents {
@BeforeClass
public void setup() throws IOException {
driver = initiTest(this.getClass().getSimpleName());
}
public class SecondClass extends HomePageComponents {
public SecondClass(ActionEngine driver) {
// TODO Auto-generated constructor stub
System.out.println(BaseClass.driver);
driver = BaseClass.driver;
}
@BeforeClass
public void setup() throws IOException {
SecondClass ASA= new SecondClass(BaseClass.driver);
}
請使用如下的Singleton類:
public class TestBotApp
{
private static volatile TestBotApp ourInstance;
private static final Object mutex = new Object();
private WebDriver webDriver;
//public final HelperClass helperClass;
private TestBotApp() {
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/Chrome/chromedriver");
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-extensions");
opt.addArguments("--start-maximized");
webDriver = new ChromeDriver(opt);
//webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
webDriver.navigate().to("http://localhost:4200/web");
webDriver.manage().window().maximize();
//helperClass = new HelperClass();
}
public WebDriver getWebDriver() {
return webDriver;
}
public void closeWebDriver() {
webDriver.close();
webDriver.quit();
}
public static TestBotApp getInstance() {
TestBotApp result = ourInstance;
if (result == null) {
synchronized (mutex) {
result = ourInstance;
if (result == null)
ourInstance = result = new TestBotApp();
}
}
return result;
}
}
對於創建對象:
public class TestConfig {
@BeforeSuite
public void testBeforeSuite() {
WebDriver webDriver = TestBotApp.getInstance().getWebDriver();
System.out.println("testBeforeSuite()");
}
@AfterSuite
public void testAfterSuite() {
System.out.println("testAfterSuite()");
//TestBotApp.getInstance().closeWebDriver();
}
@BeforeTest
public void testBeforeTest() {
System.out.println("testBeforeTest()");
}
@AfterTest
public void testAfterTest() {
System.out.println("testAfterTest()");
}
@BeforeMethod
public void beforeTestMethod() {
System.out.println("Test");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.