Почему мы не пишем RemoteWebdriver driver = new ChromeDriver (); - PullRequest
2 голосов
/ 09 апреля 2020

этот вопрос всплыл у меня в голове: почему мы не пишем RemoteWebdriver driver = new ChromeDriver(); в чем вред, в чем преимущества, почему мы не пишем так, когда создаем наш экземпляр драйвера.

Мы пишем как:

Webdriver driver = new ChromeDriver(); 
ChromeDriver driver = new ChromeDriver();

но не так:

RemoteWebdriver driver = new ChromeDriver(): 

Я новичок в этом, поэтому любая помощь будет оценена.

Спасибо

1 Ответ

1 голос
/ 09 апреля 2020

При инициализации ChromeDriver и назначении его переменной, тип которой ChromeDriver, вы можете использовать все конкретные методы, доступные для этого типа. Это полезно, если вам нужно настроить окно браузера Chrome:

ChromeDriver driver = new ChromeDriver();

// Configure Google Chrome

WebDriver - это интерфейс. ChromeDriver - это конкретный класс, который реализует интерфейс WebDriver. При инициализации переменной WebDriver для нового экземпляра ChromeDriver вы просто предоставляете конкретную реализацию абстракции WebDriver. Это делается, когда вы хотите провести тестирование в Chrome, но вам не нужны Chrome определенные c конфигурации, и для ваших тестов достаточно методов, предоставляемых интерфейсом WebDriver.

WebDriver driver = new ChromeDriver();

// Use the WebDriver abstraction without needing to know it is Chrome

Класс RemoteWebDriver - это абстрактный класс, из которого происходит ChromeDriver. Он имеет конкретную реализацию, связанную с выполнением вызовов веб-службы к процессу «веб-драйвера», запущенному на том же компьютере. Он также содержит абстракции, которые должны реализовывать конкретные классы, такие как ChromeDriver.

Причина, по которой вы не часто видите, что новый ChromeDriver назначается переменной RemoteWebDriver, заключается в том, что с точки зрения теста, нет функциональной разницы между Объект WebDriver и объект RemoteWebDriver. Уровень абстракции, предоставляемый RemoteWebDriver, просто не очень полезен.

RemoteWebDriver driver = new ChromeDriver();

// test code tends to only call methods defined in the WebDriver interface,
// so why bother with a concrete class?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...