簡體   English   中英

如何在Selenium WebDriver中為多個類創建同一實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM