Selenium приобрел огромную популярность как наиболее предпочтительный инструмент автоматизации тестирования. Он широко используется для тестирования веб-приложений, поскольку поддерживает множество языков программирования, операционных систем и браузеров. Кроме того, реализация Selenium test automation относительно проста, что позволяет легко интегрировать ее с другими фреймворками.
Как вы уже знаете, существуют различные компоненты Selenium, включая Selenium IDE, Selenium RC, Selenium Grid и Selenium WebDriver. И Selenium WebDriver является наиболее важным компонентом набора инструментов Selenium. Но знаете ли вы, что такое RemoteWebDriver и чем он отличается от WebDriver?
В этом блоге мы поймем разницу между Selenium WebDriver и Selenium RemoteWebDriver. Прежде чем углубляться в различия, давайте сначала разберемся в базовой архитектуре Selenium WebDriver.
Вот подробное руководство по что такое Селен для непосвященных.
Что такое Selenium WebDriver?
Selenium WebDriver позволяет взаимодействовать с браузерами напрямую с помощью сценариев автоматизации. Он поддерживает различные платформы и выполняется быстрее, чем Selenium RC (который сейчас устарел) или IDE. Selenium WebDriver предоставляет множество клиентских библиотек для таких языков программирования, как Java, Python, Ruby, C# и т.д. для создания ваших сценариев автоматизации тестирования Selenium. Библиотеки можно загрузить по этому пути .
Связь между этими клиентами и сервером осуществляется по проводному протоколу JSON. Например: когда дается команда открыть браузер с определенным URL-адресом, вся необходимая информация, такая как тип браузера, версия браузера и желаемые возможности, будет использоваться для создания полезной нагрузки JSON. Клиент отправит эту полезную нагрузку, содержащую всю необходимую информацию, по проводному протоколу JSON через HTTP-клиент r. Затем сервер определит тип браузера, в котором должна быть выполнена команда, и запустит указанную команду в этом конкретном браузере.
Это базовая архитектура Selenium WebDriver. Теперь пришло время перейти к Selenium RemoteWebDriver и посмотреть, как работает Selenium Grid RemoteWebDriver.
Что такое Selenium RemoteWebDriver?
Selenium RemoteWebDriver используется для запуска пакета автоматизации браузера на удаленной машине. Другими словами, RemoteWebDriver – это класс, реализующий интерфейс WebDriver на удаленном сервере. Классы драйверов браузера, такие как FirefoxDriver, ChromeDriver, InternetExplorerDriver и т. Д., Расширяют класс удаленного WebDriver.
Класс Selenium RemoteWebDriver может быть реализован в рамках этого пакета-
java.lang.Object org.openqa.selenium.remote.RemoteWebDriver
Это реализованные интерфейсы для Selenium RemoteWebDriver-
Hascapabilities, hasinputdevices, Интерактивный, имя_пользователя, имя_пользователя, селектор, идентификатор, ссылочный текст, имя_пользователя, имя_пользователя, путь, JavascriptExecutor, searchcontext, TakesScreenshot, WebDriver
Это известные подклассы для Selenium RemoteWebDriver-
ChromeDriver, Пограничный драйвер, FirefoxDriver, InternetExplorerDriver, OperaDriver, SafariDriver
Это базовая архитектура Selenium RemoteWebDriver. Вы также можете обратиться к официальной документации Selenium для получения подробной информации о Selenium RemoteWebDriver.
Основная функция Selenium RemoteWebDriver заключается в том, чтобы выступать в качестве интерфейса для выполнения тестов на удаленной машине или в распределенной среде. И это наиболее существенное различие между Selenium RemoteWebDriver и Selenium WebDriver.
Для удаленного запуска тестов мы можем использовать Selenium Grid RemoteWebDriver. Здесь нам нужно будет передать экземпляр RemoteWebDriver, определив удаленный URL-адрес и желаемые возможности. В следующем разделе будет объяснено, как запустить этот экземпляр в сетевой сетке Selenium .
Внедрение Selenium Grid и RemoteWebDriver
Облако Selenium Grid может выполнять тесты браузера на нескольких компьютерах с разными операционными системами и браузерами. Преимущество использования сетки Selenium заключается в том, что она позволяет выполнять эти тесты параллельно в различных средах.
Существует два основных компонента селеновой сетки, а именно-
- Хаб
- Узел
Концентратор действует как сервер, а узел – это удаленная машина, на которой тесты выполняются в нескольких операционных системах и браузерах. Тип браузера и платформа, на которой тесты должны выполняться на удаленной машине, должны быть определены в Желаемых возможностях .
Ниже перечислены шаги, которые вам необходимо выполнить для настройки сетки Selenium-
Шаг 1: Загрузите автономную банку Selenium с официального сайта Selenium.
Шаг 2: Теперь нам нужно определить концентратор и узел для выполнения наших тестов. Для определения Концентратор , откройте командную строку (cmd.exe ) и перейдите в папку, в которой находится автономная банка Selenium. Введите следующую команду-
java -jar selenium-server-standalone-3.141.59.jar -role hub
По умолчанию сервер будет запущен в порту 4444, который может быть изменен по порту, за которым следует номер порта.
После успешного запуска концентратора вы должны увидеть сообщение, как показано на рисунке ниже.
Шаг 3: Как только концентратор запущен, мы должны настроить Узел в другой системе для запуска наших тестов. Чтобы настроить Узел , откройте командную строку, перейдите к пути к автономной папке Selenium и введите следующую команду-
Java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:4444/grid/register -port 1414
Вам необходимо будет указать номер порта для узла с помощью параметра -port, за которым следует номер порта (в данном случае 1414).
Как только Узел будет запущен, вы сможете увидеть сообщение, подобное изображению ниже.
Шаг 4: Чтобы проверить успешную настройку, откройте localhost:4444/сетка/консоль в браузере, в котором отображаются сведения о настроенной Узел и Хаб .
Несколько узлов могут быть сконфигурированы, как описано выше, и могут быть запущены тесты.
Шаг 5: После настройки концентратора и узла мы можем запустить наши тесты с помощью сценария автоматизации.
Ниже показан пример кода для проверки функциональности входа на веб-сайт. В этом коде мы реализовали экземпляр Selenium Grid RemoteWebDriver-
package Demo;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;
public class GridDemo {
@Test
public void login() throws MalformedURLException{
DesiredCapabilities dr = DesiredCapabilities.firefox();
//specify the browser
dr.setBrowserName("firefox");
//specify the environment
dr.setPlatform(Platform.WINDOWS);
//specify the hub URL
RemoteWebDriver driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dr);
driver.navigate().to("https://opensource-demo.orangehrmlive.com/");
driver.findElement(By.id("txtUsername")).sendKeys("Admin");
driver.findElement(By.id("txtPassword")).sendKeys("admin123");
driver.close();
}
}
В этом коде мы реализовали экземпляр Selenium Grid RemoteWebDriver-
Приведенный выше код будет выполняться на настроенной удаленной машине, и, настроив узлы с различными браузерами или операционными системами, тест можно запускать параллельно. Для достижения максимальных результатов мы рекомендовали использовать облачную сетку Selenium, такую как Лямбда-тест. Это позволяет вам выполнять кроссбраузерное тестирование на более чем 2000 браузерах, операционных системах и устройствах.
Выполнение Тестов На Лямбда-Тестовой Сетке Selenium
Настройка сетки Selenium путем настройки концентратора и узлов потребует времени и усилий вручную. При настройке сетки требуются глубокие знания, так как это требует немного дополнительных усилий. В случае, если вы хотите быстро настроить сетку без ручного вмешательства, есть быстрый способ.
Вы можете использовать сетку Selenium для лямбда-тестов, которая эффективно выполняет тесты в распределенных средах без каких-либо настроек конфигурации. Вам просто нужно войти в свою учетную запись Lambda Test и запустить скрипт автоматизации. Вы можете зарегистрироваться бесплатно, не так ли здесь .
Разве это не потрясающе?
Как только вы войдете в свою тестовую учетную запись Lambda, вам будет предоставлено уникальное Имя пользователя и Маркер доступа/Ключ . Вы можете найти эти данные в Профиле раздел . Эти учетные данные могут быть использованы в вашем сценарии автоматизации, и вы можете начать запускать свои первые в истории сценарии Selenium Grid RemoteWebDriver.
Ниже приведен простой код для выполнения функций входа в систему в различных браузерах и операционных системах с помощью лямбда-тестовой сетки. В этом коде мы внедрили экземпляр Selenium Grid RemoteWebDriver в облаке лямбда-теста-
Package com.ParallelTestInGrid;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class gridTesting {
String username = "USERNAME"; //Enter your username
String accesskey = "ACCESSKEY"; //Enter your accesskey
static RemoteWebDriver driver = null;
String gridURL = "@hub.lambdatest.com/wd/hub";
boolean status = false;
@BeforeTest
@Parameters("browser")
public void setUp(String browser)throws MalformedURLException
{
if(browser.equalsIgnoreCase("chrome"))
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "chrome"); //To specify the browser
capabilities.setCapability("version", "70.0"); //To specify the browser version
capabilities.setCapability("platform", "win10"); // To specify the OS
capabilities.setCapability("build", "LambdaTestApp"); //To identify the test
capabilities.setCapability("name", "LambdaTestGridExample");
capabilities.setCapability("network", true); // To enable network logs
capabilities.setCapability("visual", true); // To enable step by step screenshot
capabilities.setCapability("video", true); // To enable video recording
capabilities.setCapability("console", true); // To capture console logs
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
else if(browser.equalsIgnoreCase("Firefox"))
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "Firefox"); //To specify the browser
capabilities.setCapability("version", "76.0"); //To specify the browser version
capabilities.setCapability("platform", "win10"); // To specify the OS
capabilities.setCapability("build", "LambdaTestApp"); //To identify the test
capabilities.setCapability("name", "LambdaTestGridExample");
capabilities.setCapability("network", true); // To enable network logs
capabilities.setCapability("visual", true); // To enable step by step screenshot
capabilities.setCapability("video", true); // To enable video recording
capabilities.setCapability("console", true); // To capture console logs
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
@Test
public void Login() {
driver.get("https://opensource-demo.orangehrmlive.com/");
String pageTitle = driver.getTitle();
System.out.println("The title of this page is ===> " +pageTitle);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("txtUsername")).clear();
driver.findElement(By.id("txtUsername")).sendKeys("Admin");
driver.findElement(By.id("txtPassword")).clear();
driver.findElement(By.id("txtPassword")).sendKeys("admin123");
driver.findElement(By.id("btnLogin")).click();
System.out.println("successfully logged in");
}
@AfterTest
public void tearDown() {
driver.quit();
}
}
В этом коде мы внедрили экземпляр Selenium Grid RemoteWebDriver в облаке лямбда-теста-
Заканчиваем!
Чтобы быстро обобщить различия между Selenium Webdriver и Selenium RemoteWebDriver, давайте посмотрим в таблицу ниже-
| WebDriver – это интерфейс, который можно импортировать из org.openqa.selenium. * посылка. | Удаленный WebDriver – это класс, реализующий интерфейс WebDriver. |
| WebDriver – это объект, представляющий браузер, который можно использовать для управления различными браузерами. | Удаленный WebDriver – это объект, который может управлять браузером в сетке путем настройки узла и концентратора. |
| get(),close(),quit() и т.д. – это методы, предоставляемые WebDriver. | Удаленный WebDriver предоставляет специальные методы, такие как getSessionId(), setSessionId(), StartSession() и т.д. |
| WebDriver можно использовать для выполнения тестов на локальной машине. | Удаленный WebDriver может выполнять выполнение тестов на удаленных компьютерах в различных браузерах и в нескольких средах. |
В этой статье мы познакомили вас с базовой архитектурой Selenium RemoteWebDriver и WebDriver. Мы также рассмотрели, как настроить сетку Selenium, выполнить простые тесты с помощью Selenium Grid и Selenium RemoteWebDriver. В конце мы суммировали фундаментальные различия между Selenium WebDriver и Selenium RemoteWebDriver.
К настоящему времени вы могли бы получить достаточные знания о внедрении Selenium RemoteWebDriver на вашем компьютере, а также в облаке LambdaTest Selenium Grid . Мы хотели бы услышать ваши отзывы об этой статье в поле для комментариев ниже. Вы также можете поделиться этой статьей со своими друзьями и коллегами и помочь им понять реализацию Selenium RemoteWebDriver для более быстрой автоматизации тестирования Selenium.
Счастливого тестирования!!!
Оригинал: “https://dev.to/shalinibaskaran12/selenium-remotewebdriver-what-is-it-how-is-it-different-from-webdriver-1gak”