Статьи

Как использовать Selenium WebDriver для кросс-браузерного тестирования

Эта статья была первоначально опубликована на LambdaTest . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

Selenium – это популярная среда автоматизации тестирования, которая в основном используется для кросс-браузерного тестирования Он имеет открытый исходный код и идеально подходит для автоматизации тестирования веб-приложений в различных браузерах, таких как Firefox, Chrome, Internet Explorer и Microsoft Edge. Selenium стала известной платформой и жестко конкурирует с другими тестовыми средами, такими как HP QTP (Quick Test Professional) и AKA HP UFT (Unified Functional Testing). Этот учебник для Selenium WebDriver поможет вам получить общее представление о компонентах набора Selenium, архитектуре Selenium WebDriver и покажет, как запустить автоматизацию для тестирования веб-сайта на совместимость с различными браузерами с использованием Selenium WebDriver для Google Chrome, Mozilla Firefox и Internet Explorer.

Selenium – это комбинация различных инструментов, и каждый инструмент играет важную роль в автоматизации веб-тестирования. Давайте углубимся в учебник WebDriver.

Компоненты Selenium Suite

Ниже приведены основные компоненты Selenium Test Suite:

  • Селен интегрированная среда разработки (IDE)
  • Селен пульт дистанционного управления (RC)
  • Selenium WebDriver
  • Selenium Grid

Теперь давайте подробно рассмотрим эти компоненты в этом учебном руководстве по Selenium WebDriver.

Селен интегрированная среда разработки (IDE)

Selenium IDE – это простой плагин Firefox, который используется для записи и воспроизведения скриптов. Однако Selenium IDE может использоваться только для написания сценариев автоматизации для автоматизации тестирования простых вариантов использования. Selenium IDE не поддерживает условные операторы, обработку исключений, циклы, захват снимков экрана и т. Д. Для автоматизации сложных случаев использования большинство разработчиков и тестировщиков предпочитают выбирать тестирование по сценариям вместо тестирования по записи и воспроизведению . Тестовый комплект Selenium состоит из Selenium Remote Control (RC) или Selenium WebDriver.

Selenium IDE доступна для различных операционных систем, а именно Windows, Linux, Mac OS и т. Д. Selenium IDE для Firefox можно скачать здесь .

Селен пульт дистанционного управления (RC)

Для тестирования сложных сценариев можно использовать Selenium Remote Control (RC). Он основан на модели клиент-сервер, которая позволяет выполнять тесты в браузере, который контролируется сервером. Существуют клиентские библиотеки на разных языках программирования, которые позволяют разработчикам легко создавать эффективные тестовые примеры на языке программирования, на котором они чувствуют себя комфортно и обладают опытом. Начиная с версии 2.25.0, RC поддерживает Java, C #, Python, Perl, Ruby и т. Д.

Selenium Server является основным компонентом Selenium RC. Некоторые из основных функций / обязанностей Selenium RC приведены ниже:

  • Содержит ядро ​​Selenium Framework и отвечает главным образом за внедрение этого кода в браузер.
  • Клиентская программа отправляет команды в RC, которые затем интерпретируются сервером и затем отправляются в браузер.
  • После выполнения результаты отправляются обратно клиенту.
  • Клиент и сервер взаимодействуют через обычный механизм HTTP GETS и POST.

Как упоминалось ранее, Selenium RC поддерживает разные браузеры, в отличие от Selenium IDE, которая доступна только для Mozilla Firefox. Недостатком Selenium RC является то, что он не поддерживает функции записи и воспроизведения, которые могут быть жизненно важны для автоматизации тестовых случаев, когда задачи повторяются, особенно для регрессионного тестирования . Перед выполнением тестов с использованием Selenium RC необходимо вручную запустить экземпляр Selenium RC Server, и этот экземпляр должен работать на протяжении всего цикла тестирования .

Selenium WebDriver

Мы знаем, что Selenium IDE основана на графическом интерфейсе, где Selenium RC – это отдельная Java-программа, которая позволит вам выполнять тестовые наборы HTML. Платформа Selenium WebDriver более широко используется по сравнению с Selenium IDE и Selenium RC. В отличие от Selenium RC, основанного на модели клиент-сервер, платформа Selenium WebDriver реализована с помощью драйвера для конкретного браузера, например, у каждого браузера будет свое соответствующее приложение WebDriver, для которого будет выполняться тестирование автоматизации.

Selenium WebDriver напрямую связывается с браузером, поэтому ему не требуется какой-либо отдельный компонент, такой как Selenium Server. Он поддерживает основные языки программирования, полезные для тестировщика программного обеспечения, а именно C #, Ruby, Java, Python, Perl и т. Д. Прежде чем вы начнете изучать этот учебник Selenium WebDriver, обязательно скачайте Selenium WebDriver для браузера, в котором проводится межбраузерное тестирование. выполнила. Вы можете скачать Selenium WebDriver по ссылкам, которые указаны ниже:

Selenium Grid

Последовательное тестирование подходит для тестирования кода, ограниченного несколькими браузерами, операционными системами или устройствами. Однако методология дает сбой, когда тестирование должно проводиться в среде с несколькими комбинациями. Именно здесь параллельное тестирование может быть чрезвычайно полезным, поскольку оно может ускорить весь процесс тестирования. Параллельное тестирование может позволить вам выполнить аналогичный тестовый случай одновременно в разных тестовых конфигурациях. Вы также можете одновременно выполнять разные тесты в одном браузере. Параллельное тестирование – это гораздо больше, но это может отклонить наше внимание от Selenium WebDriver.

Вернемся к основам: Selenium Grid в основном используется для параллельного тестирования, поскольку позволяет одновременно выполнять тесты на разных компьютерах с использованием разных браузеров и операционных систем. Это делает работу в сочетании с Selenium RC. Пример, демонстрирующий использование Selenium Grid, приведен ниже:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

desired_cap = {
'platform' : 'win10',
'browserName' : 'chrome',
'version' :  "67.0",
}

url = "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"

driver = webdriver.Remote(
    desired_capabilities=desired_cap,
    command_executor= url
) 

driver.implicitly_wait(1)
driver.get("http://www.google.com/")
driver.quit()

Selenium WebDriver Architecture

Взгляните на основные блоки, которые составляют архитектуру Selenium WebDriver:

  • Клиентские библиотеки Selenium
  • JSON Wire Protocol
  • Драйверы браузера
  • Браузеры

Давайте рассмотрим каждый компонент более подробно.

Клиентские библиотеки Selenium

Как упоминалось ранее, разработчики могут использовать Selenium для написания тестового кода на разных языках, таких как C #, Java, Python, Perl и т. Д. Многоязычная поддержка возможна благодаря клиентским библиотекам Selenium или привязкам языка Selenium. Например, если вы пишете код на Python, вам потребуются клиентские библиотеки Python. Клиентские драйверы Selenium для разных языков программирования можно скачать здесь .

JSON Wire Protocol

Проводной протокол JSON (нотация объектов JavaScript) облегчает передачу данных между клиентом и сервером. Это API, основанный на REST (передача состояния представления). Каждый браузер будет иметь свой собственный драйвер браузера.

Драйверы браузера

Драйвер браузера в основном используется для связи с браузерами. Поскольку внутренняя логика браузера и его функциональные возможности не раскрыты, драйвер браузера обеспечивает необходимый уровень «инкапсуляции», чтобы сохранить детализацию уровня выполнения более абстрактной. Каждый браузер имеет свой соответствующий драйвер браузера.

Браузеры

Поскольку драйверы браузеров доступны для популярных браузеров, таких как Chrome, Firefox, Internet Explorer, Safari и Microsoft Edge, вы можете использовать любой из них для проведения кросс-браузерного тестирования. Следует отметить, что вы не можете выполнять кросс-браузерное тестирование веб-сайта в браузере, драйвер браузера которого не является общедоступным.

Селен-WebDriver-Architecture-схема

LambdaTest теперь работает с сеткой Selenium на облаке

LambdaTest предлагает облачную Selenium Grid, которая поможет вам быстро отслеживать процесс тестирования автоматизации. Selenium Grid предлагает более 2000 реальных браузеров и версий браузеров, работающих в различных операционных системах. Вы можете выполнить параллельное тестирование с помощью LambdaTest Selenium Grid, не беспокоясь об установке какой-либо тяжелой инфраструктуры на локальном компьютере, а также получите широкий выбор браузеров для максимального увеличения охвата тестированием.

Количество параллельных сеансов, которые вы можете запустить, полностью зависит от выбранных вами одновременных сеансов. Параллельное тестирование может помочь вам значительно сократить ваши циклы тестирования. Например, скажем, у вас есть набор тестов, который занимает 60 минут без параллельного тестирования. Теперь, если у вас есть 2 параллелизма, вы можете запустить 2 теста одновременно, сократив общее время теста до 30 минут. Точно так же, если у вас есть 3 параллельных режима, общее время тестирования сокращается до 20 минут. Используйте калькулятор параллелизма LambdaTest, чтобы вычислить, сколько параллельных сеансов вам может понадобиться в соответствии с вашим набором тестов.

Selenium WebDriver в действии

Теперь, когда вы знакомы с основами драйверов Selenium и Browser, пришло время взглянуть на простой скрипт WebDriver. Прежде чем мы рассмотрим пример, пожалуйста, убедитесь, что у вас есть готовая среда программирования (мы используем Eclipse со всеми необходимыми пакетами, загруженными с Eclipse Marketplace ). Плагин Selenium для Eclipse можно скачать здесь . Пример кода был написан на языке Python, но вы можете написать тестовый код на C #, Java, Perl, Ruby и т. Д.

Пример Firefox WebDriver

Поскольку тестовый код будет связываться с браузером (Chrome, Firefox, Internet Explorer и т. Д.), Убедитесь, что на вашем компьютере установлена ​​соответствующая клиентская библиотека / WebDriver. Пожалуйста, обратитесь к разделу Драйверы браузера, чтобы узнать, как загрузить соответствующий WebDriver.

Ниже приведен пример кода, который использует Selenium, Firefox WebDriver для открытия веб-страницы:

 # Import the necessary modules for development
import time
import unit test
from selenium import web driver

# Invoke a new Firefox Instance
ff_driver = webdriver.Firefox()

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the required page
ff_driver.get("http://www.lambdatest.com")

# Sleep for 10 seconds in order to see the results
time.sleep(10)

# Close the Browser instance
ff_driver.close()

Давайте пройдемся по коду. Перед выполнением какого-либо действия все необходимые модули импортируются с помощью оператора import [Строки 2 ~ 4]. В тестовом коде мы используем Firefox WebDriver, поскольку тестирование выполняется в браузере Firefox [Строка 7]. В коде ff_driver Если у вас не установлен WebDriver или вы пытаетесь использовать браузер, для которого нет поддержки (через WebDriver), вы получите следующую ошибку:

selenium.common.exceptions.WebDriverException: Message: 'operadriver' executable needs to be in PATH

Сообщение об ошибке отображалось при попытке загрузить браузер WebDriver для Opera (без установленного на компьютере WebDriver). Чтобы избавиться от ошибки, вам следует установить WebDriver для Opera .

Когда все операции в браузере завершены, ff_driver.close()

Чтобы выполнить код, вы можете вызвать Ctrl + F9 в Eclipse IDE или скомпилировать код, используя параметры командной строки Python:

image6-1

Пример Chrome WebDriver

В предыдущем разделе нашего руководства по Selenium WebDriver мы использовали Firefox WebDriver. В этом разделе мы рассмотрим изменения, которые необходимы, если вы используете браузер Chrome для тестирования. Убедитесь, что автономный двоичный файл ChromeDriver (который отличается от двоичного файла браузера Chrome) доступен по правильному пути или присутствует как часть переменной среды webdriver.chrome.driver. Если вы используете Windows, вам необходимо сначала загрузить Chrome WebDriver отсюда . Вставьте ChromeDriver.exe в место, где вы установили Python (в нашем случае это был путь установки по умолчанию, т.е. C: \ Python27 \ Scripts). Вы должны загрузить соответствующий WebDriver [Строка 8], а остальная часть кода остается прежней. Ниже приведен фрагмент кода, в котором изменение (необходимое для Chrome WebDriver) выделено другим цветом:

 # Import the necessary modules for development
import time
import unit test
from selenium import web driver

# Invoke a new Chrome Instance
ff_driver = webdriver.Chrome()

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the required page
ff_driver.get("http://www.lambdatest.com")

# Sleep for 10 seconds in order to see the results
time.sleep(10)

# Close the Browser instance
ff_driver.close()

Пример Internet Explorer WebDriver

До сих пор в нашем учебном руководстве по Selenium WebDriver мы демонстрировали кросс-браузерное тестирование с использованием Firefox WebDriver и Chrome WebDriver. В этом разделе мы рассмотрим изменения, которые необходимы, если вы используете браузер Chrome для тестирования. Вы должны скачать правильный Internet Explorer WebDriver (32 бит / 64 бит) здесь или здесь . Вставьте InternetExplorerDriver.exe в место, где вы установили Python (в нашем случае это был путь установки по умолчанию, например, C: \ Python27 \ Scripts) или в любое другое место по вашему выбору. Если вы копируете InternetExplorer WebDriver в путь, где присутствует исполняемый файл Python, вам не нужно указывать «абсолютный путь» при загрузке веб-драйвера [Строка 7]. В другом случае вы должны указать абсолютный путь [Строка 9]. Ниже приведен фрагмент кода с изменением (требуется для IE WebDriver), выделенным другим цветом:

 # Import the necessary modules for development
import time
import unit test
from selenium import web driver

# Method 1 - Invoke a new IE Instance
ff_driver = webdriver.Ie()
# Method 2 - Invoke a new IE Instance
ff_driver = webdriver.Ie("path\to\IEDriverServer.exe")

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the required page
ff_driver.get("http://www.lambdatest.com")

# Sleep for 10 seconds in order to see the results
time.sleep(10)

# Close the Browser instance
ff_driver.close()

Наконец, в нашем руководстве по Selenium WebDriver мы рассмотрим другой пример, в котором мы используем модуль ActionChains, который используется для автоматизации низкоуровневых взаимодействий, таких как движения мыши, движения кнопок, взаимодействия с контекстным меню и т. Д., Для обеспечения надежного дизайна пользовательского интерфейса . Более подробную информацию о ActionChains можно найти здесь .

 # Import the necessary modules for development
import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains

# Invoke a new Firefox Instance
ff_driver = webdriver.Firefox()

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the Home Page
ff_driver.get("https://www.lambdatest.com/")

# Look for the Search Element and enter the Search Criteria

search_criteria = ff_driver.find_element_by_link_text("Support")
actionChains = ActionChains(ff_driver)
actionChains.context_click(search_criteria).perform()
time.sleep(5)

# Perform action on the Images Link
ActionChains(ff_driver) \
    .key_down(Keys.CONTROL) \
    .click(search_criteria) \
    .key_up(Keys.CONTROL) \
    .perform()

# Sleep for 10 seconds in order to see the results
time.sleep(10)

# Close the Browser instance
ff_driver.close()

Как видно из приведенного выше примера кода, мы сохраняем код для создания экземпляра Firefox WebDriver [Строки 9 ~ 16]. Есть несколько новых импортируемых модулей – ActionChains и Keys . Как только браузер открывает нужную веб-страницу, т.е. https://www.lambdatest.com/ , выполняется поиск, просматривая текст ссылки (используя метод find_element_by_link_text). В нашем примере текст ссылки, который ищется на веб-странице, называется «Поддержка» [Строки 20–22].

Как только критерий поиска встречается, выполняется операция (CTRL + CLICK), что открывает эту страницу в «новой вкладке» [Строки 26–30]. Модуль ActionChains используется для выполнения этой операции. Выход ниже:

2_ActionChains_WebDriver-пример-выход-1

Мы использовали ActionChains, так как он подходил для примера, который мы продемонстрировали выше. Вы можете взглянуть на различные модули в модуле Selenium WebDriver (для Python) здесь . Хотя мы использовали язык Python для реализации, вы можете использовать язык программирования (C #, Java, Perl, Ruby, PHP) по вашему выбору.

Local WebDriver – не очень масштабируемый подход

Тестирование с использованием локального WebDriver можно использовать в том случае, если вы планируете тестировать свой веб-сайт на ограниченном количестве комбинаций «браузер + операционная система + устройства». Тем не менее, подход может дать сбой, если количество комбинаций больше. Вы не можете иметь локальную настройку для каждой комбинации, так как это не масштабируемый подход, а также может оказаться очень дорогостоящим.

Лучшим решением было бы использовать возможности платформы, такой как LambdaTest, где вы можете выполнять кросс-браузерное тестирование в облаке. Используя LambdaTest, вы можете проверить свой веб-сайт в более чем 2000 браузерах, операционных системах и конфигурациях устройств. Для начала вам необходимо создать учетную запись на LambdaTest. Поскольку вы будете использовать Remote WebDriver (используя Selenium Grid в LambdaTest) для тестирования вашего веб-приложения, вы должны записать имя пользователя и ключ доступа в своем профиле LambdaTest .

Запуск Selenium Script с использованием удаленного WebDriver с LambdaTest

Теперь, когда вы знаете об использовании Selenium WebDriver и потенциальных недостатках использования этого подхода, мы рассмотрим, как вы можете перенести локальную реализацию WebDriver на Remote WebDriver. Основные принципы Remote WebDriver аналогичны Local WebDriver, за исключением того, что код Remote WebDriver может не выполняться на том же компьютере, откуда он был инициирован. Remote WebDriver основан на модели клиент-сервер, где сервер представляет собой простой Java-сервлет, размещенный на любом современном сервере приложений JEE. Концентратор / Сервер загружает тесты, которые должны быть выполнены. Он получает тестовые запросы от разных клиентов и, основываясь на требованиях (называемых желаемыми возможностями), направляет запрос к клиенту с наилучшим соответствием / наиболее подходящим вариантом.

Например, если ваш тест необходимо выполнить в Ubuntu OS + Chrome, сервер / концентратор будет сканировать возможности клиентов / узлов, зарегистрированных на сервере, и перенаправлять запрос клиенту с соответствующими возможностями. В архитектуре Selenium Grid может быть только один сервер и количество клиентов. Более подробную информацию об API Remote Driver можно получить в других блогах на сайте LambdaTest.

После входа в LambdaTest вы должны сгенерировать возможности, требуемые узлами, посетив LambdaTest Capabilities Generator . Выберите предпочитаемый язык программирования (в нашем случае это Python) и соответствующую комбинацию ОС / браузера. Вы можете включить функции «Снимок экрана» и «Запись видео» при настройке возможностей. Как показано ниже, наше требование заключается в том, что тест должен выполняться на Firefox (версия 64.0), который установлен на компьютере с Windows 10. Возможности для требования ниже:

 capabilities = {
        "build" : "Remote WebDriver Testing",
        "name" : "Remote WebDriver Testing example",
        "platform" : "Windows 10",
        "browserName" : "Firefox",
        "version" : "64.0",
    }

Ниже приведен скриншот из генератора возможностей LambdaTest:

Lambdatest-возможности-генератор

Поскольку мы будем использовать Selenium Grid на сервере LambdaTest, нам нужно изменить наш код для доступа к их облачной инфраструктуре (также называемой удаленным URL). Удаленный URL-адрес показан ниже:

 /* user_name – userid for login on Lambdatest */
/* app_key – Access token obtained from Lambdatest */
remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"

@ hub.lambdatest.com / wd / hub – это настройка Selenium Grid на LambdaTest, где будет выполняться тест. В целях аутентификации пользователя имя пользователя (используется для регистрации в LambdaTest) и ключ приложения (токен доступа) добавляются к URL-адресу сетки. Объединенная строка образует remote_url. Теперь, когда вы знакомы с API-интерфейсом Remote WebDriver и генератором возможностей, давайте перенесем наш предыдущий пример в соответствии с этими требованиями.

parallel_test_example-1.py

 import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
import urllib3

#Set capabilities for testing on Firefox
ff_caps = {
        "build" : "Remote WebDriver Testing",
        "name" : "Remote WebDriver Testing example",
        "platform" : "Windows 10",
        "browserName" : "Firefox",
        "version" : "64.0",
    }

username="<user-name>"
accessToken="<access-token>"

# gridUrl: gridUrl can be found at automation dashboard
gridUrl = "hub.lambdatest.com/wd/hub"

url = "https://"+username+":"+accessToken+"@"+gridUrl

# Invoke a new Firefox Instance
#ff_driver = webdriver.Firefox()

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# Porting local webdriver to Remote WebDriver on LambdaTest server
ff_driver = webdriver.Remote(
           command_executor=url,
           desired_capabilities=ff_caps
)

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the Home Page
ff_driver.get("https://www.lambdatest.com/")

# Look for the Search Element and enter the Search Criteria

# We are commenting this code since we are doing basic verification
# search_criteria = ff_driver.find_element_by_link_text("Support")
# actionChains = ActionChains(ff_driver)
# actionChains.context_click(search_criteria).perform()

ff_driver.close()
ff_driver.quit()

Давайте рассмотрим код, особенно основные изменения:

  • Имя пользователя и accessToken добавляются в gridURL. Комбинация формирует удаленный URL-адрес, по которому выполняется выполнение тестового примера.
  • API webdriver.Remote используется вместо локального API WebDriver. Remote WebDriver API имеет два аргумента – command_executor: настройка сетки, на которой выполняется тест, и требуемые возможности: требуемые возможности / требования узла. На основании этих требований к возможностям выбирается соответствующий узел, на котором выполняется код.

Чтобы проверить состояние теста, вам необходимо посетить панель управления LambdaTest . Вы можете искать тест по его имени сборки, которое используется при формировании возможностей. Снимок экрана вышеупомянутого теста, выполняемого в сетке LambdaTest, приведен ниже.

Панель инструментов автоматизации

На панели «Вывод» имеются различные параметры, которые могут быть полезны при отладке. Некоторые из основных вариантов приведены ниже.

  • Исключение – перечисляет исключения, которые встречаются во время выполнения тестового кода.
  • Журналы – эта вкладка показывает журналы Selenium, а также журналы консоли. Это может быть очень удобно для отладки вашего кода.
  • MetaData – содержит подробную информацию о тестовой среде, в которой проводилось тестирование. В нашем случае тест выполняется на Firefox 64.0, который установлен на компьютере с Windows 10. Вы даже можете получить подробную информацию о конфигурации браузера.

Метаданные

Параллельное тестирование – ускорение циклов тестирования

Одной из функций LambdaTest, которая может ускорить весь процесс тестирования, является параллельное тестирование. В зависимости от выбранной вами модели ценообразования вы можете одновременно выполнять тесты, чтобы сократить общее время выполнения тестов. В нашем случае у нас может быть два одновременных сеанса. Чем больше одновременных сеансов, тем короче общее время выполнения теста.

Параллельные сессии

Чтобы продемонстрировать возможность распараллеливания, мы выполняем два теста одновременно. Наряду с предыдущим примером (parallel_test_example-1.py), мы выполняем второй тест (parallel_test_example-2.py) одновременно с ним.

parallel_test_example-2.py

 import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
import urllib3

#Set capabilities for testing on Chrome
ch_caps = {
        "build" : "Remote WebDriver Testing",
        "name" : "Remote WebDriver Testing example on Chrome",
        "platform" : "Windows 10",
        "browserName" : "Chrome",
        "version" : "71.0",
    }

username="<user-name>"
accessToken="<access-token>"

# gridUrl: gridUrl can be found at automation dashboard
gridUrl = "hub.lambdatest.com/wd/hub"

url = "https://"+username+":"+accessToken+"@"+gridUrl

# Invoke a new Firefox Instance
#ff_driver = webdriver.Firefox()

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# Porting local webdriver to Remote WebDriver on LambdaTest server
ff_driver = webdriver.Remote(
           command_executor=url,
           desired_capabilities=ch_caps
)

# Blocking wait of 30 seconds in order to locate the element
ff_driver.implicitly_wait(30)
ff_driver.maximize_window()

# Open the Home Page
ff_driver.get("https://www.lambdatest.com/")

# Look for the Search Element and enter the Search Criteria

# We are commenting this code since we are doing basic verification
# search_criteria = ff_driver.find_element_by_link_text("Support")
# actionChains = ActionChains(ff_driver)
# actionChains.context_click(search_criteria).perform()

ff_driver.close()
ff_driver.quit()

Выполните два теста параллельно на двух разных терминалах, вызвав команду python.

Автоматизация выхода

Ниже приведен скриншот из журналов автоматизации LambdaTest, на котором видно, что параллельно выполняются два теста.

Логи автоматизации

Вывод

Использование API Remote WebDriver в облачной инфраструктуре, такой как LambdaTest, дает ряд преимуществ, поскольку ускоряет весь процесс тестирования. Это также очень масштабируемый подход. Используя параллелизм, то есть распараллеливание, вы можете еще больше сократить общее время, затрачиваемое на автоматизированное тестирование.