Перейти к содержимому

Фотография

Как получить данные о WebDriver до его запуска

Selenium

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 LaGrandePapa

LaGrandePapa

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 23 января 2020 - 13:25

Подскажите, как лучше организовать запуск IWebDriver, чтобы присвоить ему options?

Есть класс, в котором находятся тесты:

public class BetTests : TestBase<FirefoxDriver>
{
}

 

public class TestBase<TDriver> where TDriver : IWebDriver, new()

{

}

 

В классе TestBase лежит SetUp

Для разных браузеров нужны разные options. Но проблема в том, что в момент передачи в TestBase параметра мы еще не знаем, какой это будет driver.

 

Сейчас написано топорно, но это отнимает много времени:

 

[SetUp]
        public void Start()
        {
            this.driver = new TDriver();
            if (driver.ToString() == ("OpenQA.Selenium.Chrome.ChromeDriver"))
            {
                //driver.Quit();
                //driver = null;
                ChromeOptions option = new ChromeOptions();
                driver = new ChromeDriver(option);                
            }
            if (driver.ToString() == ("OpenQA.Selenium.Firefox.FirefoxDriver"))
            {
                driver.Quit();
                driver = null;
                FirefoxOptions options = new FirefoxOptions();
                options.AcceptInsecureCertificates = true;
                driver = new FirefoxDriver(options);                
            }
            app = new Application(driver);
        }

Получается что сначала запускается браузер, узнаем что это за браузер, убиваем его, устанавливаем options и запускаем повторно. А как сделать, чтобы до запуска браузера уже узнать какой будет браузер?!

 

 


  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 23 января 2020 - 14:39

 

Подскажите, как лучше организовать запуск IWebDriver, чтобы присвоить ему options?

Есть класс, в котором находятся тесты:

public class BetTests : TestBase<FirefoxDriver>
{
}

 

public class TestBase<TDriver> where TDriver : IWebDriver, new()

{

}

 

В классе TestBase лежит SetUp

Для разных браузеров нужны разные options. Но проблема в том, что в момент передачи в TestBase параметра мы еще не знаем, какой это будет driver.

 

Сейчас написано топорно, но это отнимает много времени:

 

[SetUp]
        public void Start()
        {
            this.driver = new TDriver();
            if (driver.ToString() == ("OpenQA.Selenium.Chrome.ChromeDriver"))
            {
                //driver.Quit();
                //driver = null;
                ChromeOptions option = new ChromeOptions();
                driver = new ChromeDriver(option);                
            }
            if (driver.ToString() == ("OpenQA.Selenium.Firefox.FirefoxDriver"))
            {
                driver.Quit();
                driver = null;
                FirefoxOptions options = new FirefoxOptions();
                options.AcceptInsecureCertificates = true;
                driver = new FirefoxDriver(options);                
            }
            app = new Application(driver);
        }

Получается что сначала запускается браузер, узнаем что это за браузер, убиваем его, устанавливаем options и запускаем повторно. А как сделать, чтобы до запуска браузера уже узнать какой будет браузер?!

 

Как-то тут все неправильно

1. Почему TestBase<IDriver>? Зачем как-то в типе хранить драйвер?

2. Делегируйте вопрос запуска драйвера кому-то другому

3. В рамках этого решения вроде можно использовать typeof (не помню точно синтаксис C#), что не требует инициализации драйвера

 

Но это все равно неправильно


  • 0

#3 LaGrandePapa

LaGrandePapa

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 24 января 2020 - 06:16

typeof помог, спасибо.

Буду думать дальше, как делать правильно.


  • 0



Темы с аналогичным тегами Selenium

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных