В модели POM мы в идеале склонны инициализировать объект драйвера в базовом классе. И на классифицированной странице мы передаем этот объект драйвера. Но проблема состоит в том, чтобы избежать передачи этого объекта, и тесты должны продолжать работать параллельно также в среде XUNit. Ниже приведена структура
public class BaseClass:IDisposable
{
public IWebDriver Driver{get;set;}
public BaseClass()
{
if(Driver == null)
{
Driver = new ChromeDriver();
}
}
}
public class Page1:BaseClass
{
public void method1()
{
this.Driver.Navigate.GoToUrl("http://www.google.com")
}
}
public class Page2:BaseClass
{
public void method2()
{
this.Driver.Navigate.GoToUrl("http://www.stackoverflow.com")
}
}
public class TestClass
{
[Fact]
public void Test1()
{
new Page1().method1();
new Page2().method2();
}
}
Теперь в приведенной выше структуре, если тест выполняется, два экземпляра объекта драйвера будут созданы из-за OOPS. Если нам нужно избежать этого, мы можем сделать объект Driver статическим и повторно инициализировать его, если объект имеет значение null. Но это снова потерпит неудачу, когда мы запустим несколько тестов параллельно. Любое предложение? Я пытаюсь добиться полной инкапсуляции, когда класс Test не должен иметь никакого доступа к объектам Selenium. Эти объекты должны быть доступны только в классе Page или в классе Operation, если они у нас есть.