Как создать один и тот же экземпляр для нескольких классов в Selen WebDriver - PullRequest
0 голосов
/ 21 мая 2018

У меня был класс Base 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);
    }

1 Ответ

0 голосов
/ 21 мая 2018

Пожалуйста, используйте класс 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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...