Рубрики
Без рубрики

Автоматическое тестирование браузера с Opera и Selenium в Python

Когда дело доходит до тестирования Cross Browser, мы склонны сосредоточиться на выполнении тестовых примеров для BigWigs, таких как GOO … Tagged с помощью Python, Selenium, Automation, тестирования.

Когда дело доходит до тестирования Cross Browser, мы склонны сосредоточиться на выполнении тестовых случаев для BigWigs, таких как Google Chrome, Firefox или Safari. Как насчет других браузеров? А как насчет оперы? Opera может быть не вашим браузером по умолчанию, но он все еще является популярным веб-браузером на рынке и особенно любит в областях, которые не имеют высокоскоростного интернета. Это потому, что Opera работает довольно хорошо даже на медленных скоростях в Интернете. Благодаря этому опера, доля рынка составляет около 2,17% в мире с июля 2019 года по июль 2020 года в соответствии с GS Statcounter Анкет 2,17% могут выглядеть как небольшая доля, но мы имеем в виду глобальную статистику, что означает 2,17% всех пользователей Интернета. Это может оказаться значительным количеством потенциальных клиентов для вашего бизнеса.

Вы просто не можете покинуть оперу в качестве запоздалой мысли!

Вы, несомненно, можете провести тестирование Cross Browser вручную, но процесс тестирования неизбежно достигнет контрольно -пропускного пункта, когда будет выпущена более новая версия «браузера», на котором выполняется тестирование ». Когда все ваши ресурсы уже ставят свои энергии на тестирование других браузеров, становится сложно протестировать оперу, и она является последней и не забывать о унаследованных версиях. К счастью, Селен Есть ли, чтобы помочь нам провести автоматическое тестирование браузера с различными браузерами и языками программирования. С помощью этого блога мы расскажем о том, как вы можете выполнить автоматизацию тестов на Opera с селенами и Python. Мы будем использовать Opera Webdriver, чтобы помочь нам запустить наши сценарии тестирования селена через браузеры Opera.

Прежде чем мы начнем с автоматизации тестов селена на Opera с селенами и Python, крайне важно, чтобы мы рассмотрели Selenium Webdriver; Основной компонент тестовой структуры селена.

Все о селенах Webdriver

Ключевым преимуществом использования селена WebDriver для автоматизации тестов Selenium является то, что связь с базовым браузером выполняется через драйвер, специфичный для браузера. Каждый браузер будет иметь соответствующий Webdriver, который используется для общения с браузером, на котором выполняются тесты. Следовательно, любое обновление в версии/функциях браузера будет включать только поддержку этих новых функций в WebDriver, установленных на тестовой машине.

Подход, используемый Selenium Webdriver, полностью отличается от того, что используется Selenium IDE (плагин Firefox на основе GUI для выполнения воспроизведения и тестирования записи) и дистанционного управления Selenium (автономная программа Java для выполнения HTML -тестовых наборов). Как только селен Webdriver для соответствующего веб -браузера находится в вашей системе, вы можете начать с Cross Browser Testing с Selenium. Вы можете скачать Selenium Webdriver для популярных браузеров, таких как Opera, Firefox, Chrome, Internet Explorer, Microsoft Edge и т. Д. Из ссылок, упомянутых ниже

Опера https://github.com/operasoftware/operachromiumdriver/release
Fire Fox https://github.com/mozilla/geckodriver/releases
Хром http://chromedriver.chromium.org/downloads
Internet Explorer https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver
Microsoft https://blogs.windows.com/msedgedev/2015/07/23/bringing-automated-testing-to-microsoft-edge-through-webdriver/

Selenium webdriver: Основные строительные блоки

Селена веб-версии состоит из четырех важных блоков-

1. Библиотеки клиентов Selenium – Библиотеки клиентов Selenium, также называемые Bindings Selenium Language, в первую очередь ответственны за предоставление многоязычной поддержки языков программирования. Существуют клиентские библиотеки селена для языков программирования, таких как C#, Java, Ruby, Python, Perl и т. Д. и то же самое можно скачать с Здесь Анкет

2. Протокол проводной проводки JSON – Json (javascript object obtation) Протокол провода представляет собой интерфейс прикладного программирования на основе переноса представительства), который отвечает за облегчение передачи данных между различными блоками в архитектуре Webdriver.

3. Водители браузера – Как упомянуто в предыдущем разделе, Selenium общается с веб -браузером через соответствующий драйвер браузера. Это гарантирует, что изменения в веб -браузере (функции, версии и т. Д.) Не вызывают поломки в тестовом коде, реализованном для автоматизации тестирования селена. Из -за драйверов браузеров веб -браузеры похожи на черный ящик для фреймворка Selenium. Вам необходимо загрузить Selenium Webdriver для соответствующего веб -браузера, подробности которого уже упоминаются в предыдущем разделе.

4. Браузеры – Это фактический браузер, на котором выполняется тестирование. Автоматизация браузера Python с Selenium не может быть сделана в веб -браузере, для которого нет драйвера. В случае, если существующая реализация теста не удается после обновления браузера, настоятельно рекомендуется сначала проверить, уже присутствует ли обновленная версия WebDriver для этого конкретного браузера. Ниже показано упрощенное представление о архитектуре селена Webdriver.

Selenium webdriver: проблемы и ограничения

Хотя существует множество преимуществ использования селена Webdriver для Opera Selenium Python, есть и несколько недостатков. Некоторые из наиболее заметных ограничений использования селена Webdriver для автоматизации браузера Python ниже:

  • Нет поддержки тестирования приложений на основе Windows- Selenium WebDriver широко используется для тестирования связанных с веб-приложений, то есть веб-сайтов, веб-приложений и т. Д. Тем не менее, он не поддерживает тестирование приложений на основе Windows или локальных приложений.
  • Минимальная встроенная поддержка для тестирования мобильных приложений- Когда мы обсуждаем тестирование приложений, связанных с веб-сайтами, они также должны включать тестирование на ручных устройствах, например, Мобильные телефоны, планшеты и т. Д. Автономный Selenium Framework не поддерживает тестирование на мобильных устройствах; Следовательно, вам нужно загрузить модули/библиотеки, которые могут облегчить эту поддержку. Чтобы сделать задачу автоматизации тестов селена более эффективной, лучше перейти на платформу тестирования браузера Cross на облаке, поскольку она может быть более экономичным и масштабируемым.
  • Управление Captcha – Невозможно автоматизировать обработку Captcha в селене. Все намерение CAPTCHA на любом веб-сайте/веб-приложении состоит в том, чтобы не дать ботам подавать формы и минимизировать риск злонамеренных атак. В некоторых случаях вы можете захотеть обойти этот вариант, особенно при тестировании продукта. Автоматизация Opera с Selenium Python не может автоматизировать обработку CAPTCHA без установки/поддержки сторонних модулей/библиотек. Кроме того, эти модули/библиотеки также не гарантируют 100% точность.
  • Нет полноценных отчетов- Отчеты об автоматизации могут сыграть важную роль в отслеживании процесса автоматизации тестов селена. Участие, собранные из этих отчетов, могут быть использованы для планирования тестирования в будущих проектах и повышения точности теста/тестирования в текущих проектах. Нативная функция отчетности в селене ограничена. Вам может потребоваться использовать сторонние модули/библиотеки для достижения лучшей отчетности, например, Модуль Pytest-HTML в Pytest Framework может использоваться при использовании Opera с селенами и Python для автоматизации тестов Selenium.
  • Обработка динамических страниц- В настоящее время веб -сайты широко используют Ajax (асинхронный JavaScript и XML) для получения данных с сервера асинхронным образом. Это предотвращает перезагрузку всей веб-страницы, когда на веб-странице меняется только пара веб-элементов. Сценарии, написанные в селене, могут не идентифицировать динамически загруженные элементы. Единственный метод для обработки таких сценариев заключается в использовании ожидания (неявного или явного) или сна с указанным временем, чтобы сценарию Python Opera Selenium предоставляется достаточно времени для идентификации веб-элемента.

Эти недостатки могут быть сведены к минимуму путем перехода в тестовую среду, которая поддерживает параллельное тестирование, вместо последовательного тестирования и установки сторонних модулей/библиотек, которые могут выполнять соответствующую задачу. Это приводит к нашей следующей точке обсуждения, которая является селенам; Давайте посмотрим на Селеня Грид Анкет

Все о селене

Selenium Grid основана на архитектуре клиента-сервер, где существует только один сервер (также называемый Hub) и несколько клиентов, которые общаются с сервером (также называемым узлами). Сервер также называется Hub, а клиент называется узлом. Используя настройку селена, вы можете достичь параллелизма в вашей тестовой деятельности. Когда пользователь инициирует запрос на тест, запрос сначала передается в концентратор, который затем передает запрос на выполнение тестирования на машину узла, который соответствует требуемым возможностям, упомянутым в тесте, например, Браузер – Firefox, версия – 64.0, операционная система – Windows 10 и т. Д. Selenium Grid 2.0 более популярен, так как он поддерживает Selenium RC и Selenium Webdriver.

Существует множество преимуществ перехода на селенс сетку; Некоторые из заметных преимуществ ниже.

Параллельное тестирование – Поскольку селена сетка содержит несколько узлов с различными возможностями, например, Узел 1 – Windows 10, Firefox 64.0, Узел 2 – Ubuntu 16.04, Firefox 60.0 и т. Д.; Тестирование может быть выполнено параллельно на разных узлах. Это сокращает время выполнения значительным отрывом, которое является огромным узким местом в серийном тестировании. Следовательно, вы можете выполнить тестирование браузера Python на различных комбинациях браузеров, операционных систем и устройств параллельно.

Масштабируемый – Машина, которая действует как концентратор, должна быть могущественной, поскольку ей необходимо сканировать входящий запрос на тест и перенести его в лучший соответствующий узел в ближайшее время. Новый узловый аппарат/узел может быть добавлен на лету, что делает всю установку очень масштабируемой.

Ниже показано упрощенное представление об общей архитектуре селена сетки-

Локальная селена сетка: ограничения

Несмотря на то, что корпус локальная конструкция селена может быть использована для выполнения автоматизации браузера Python для Opera с селенами и Python, весь процесс автоматизации тестов селена может достичь пути, если он должен быть выполнен в различных комбинациях (веб -браузер + операционная система + Device)) Анкет Подход к местной селенам сетки для проведения автоматизации тестов селена не является ни масштабируемым, ни экономичным.

Следовательно, лучше перенести процесс автоматизации браузера Python в облаке, с помощью которого вы можете выполнить тестирование в реальных браузерах и операционных системах в Интернете.

Selenium Webdriver для автоматизации браузера Python

Я надеюсь, что вы понимаете ноу-хау селена Webdriver и Selenium Grid. Давайте посмотрим, как вы можете использовать Opera с Selenium и Python, а также автоматизацию тестов Selenium для автоматизации браузера Python. Для реализации мы можем использовать Pycharm IDE (Community Edition). Вы можете скачать его с Здесь И если у вас его еще нет, загрузите последнюю версию Python из Здесь Анкет Автоматизация браузера Python для Opera с Selenium и Python будет выполняться в веб -браузере Opera (на основе версии Chromium между 70 и 73). Последняя официальная версия Opera находится на Chromium 75.0, не совместима с Opera Webdriver (подробности в дальнейшем разделе).

Следовательно, мы загружаем Opera 57.0, поскольку она основана на Chromium 70, подробнее о той же и загрузке ссылки можно найти Здесь Анкет

Теперь, когда базовая настройка готова, вам следует загрузить и установить следующее:

  • Framework Selenium для Python – Выполните команду PIP установить Selenium на терминал/подсказку для установки Selenium.
  • Opera Webdriver для селена – Загрузите исполняемый файл webdriver Opera, который соответствует версии Opera Selenium Python, установленной на машине [ Ссылка ] Скопируйте файл webdriver [operadriver.exe] в месте, где присутствует браузер Opera [Opera.exe]. Добавьте желаемый путь к пути переменной среды, используя SET Path =%path%;

Чтобы лучше понять это, посмотрите на простой пример, где мы используем Framework Selenium с Opera WebDriver для выполнения поиска на DuckDuckgo.

# Example 1 - Unit test implementation using Selenium + Opera Webdriver
# Opera 57.0 download link - https://www.softexia.com/windows/web-browsers/opera-57

import unittest
from selenium import webdriver
import time
from time import sleep

# Importing options for the Opera module
from selenium.webdriver.opera.options import Options

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

class SeachTest(unittest.TestCase):
    def setUp(self):
        options = Options()
        # Setting the location of the Opera Browser
        options.binary_location = r'location_of_opera.exe'
        # Creation of Opera WebDriver instance
        self.driver = webdriver.Opera(options=options, executable_path=r'location_of_operadriver.exe')

    def test_Search(self):
        driver = self.driver
        driver.maximize_window()
        driver.get("https://duckduckgo.com/")
        elem = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q")))
        elem.send_keys("Lambdatest")
        elem.submit()

        sleep(10)

    def tearDown(self):
        # Close the browser.
        self.driver.close()

if __name__ == '__main__':
    unittest.main()

Приведенный выше пример использует рамки Unittest в Python. Предварительные шаги для инициализации и настройки выполняются в методе Setup (), а шаги очистки выполняются в методе Teardown (). Мы используем локальный Webdriver, чтобы вызвать экземпляр браузера Opera.

options = Options()
# Setting the location of the Opera Browser
options.binary_location = r'location_of_opera.exe'
# Creation of Opera WebDriver instance
self.driver = webdriver.Opera(options=options, executable_path=r'location_of_operadriver.exe')

В тестировании test_search () добавляется асинхронное ожидание в течение 20 секунд, чтобы поиск выполнялся только после завершения загрузки поле поиска в DuckDuckgo. Вы можете выполнить код, используя команду Python Анкет

Мы смотрим на другой пример, где мы используем веб -локаторы для выполнения конкретных действий. Используемая тестовая структура – это платформу. Чтобы получить подробную информацию о веб -локаторе, то есть XPath, селекторе CSS, имени, тексту ссылки, идентификаторе и т. Д., Вы должны использовать опцию Expect Element в браузере Opera. В примере мы использовали локаторы имени и XPath для выполнения действий по этим веб -элементам.

# Example 2 - Click actions on Lambdatest website using Selenium & Opera browser
# Opera 57.0 download link - https://www.softexia.com/windows/web-browsers/opera-57

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.opera.options import Options

options = Options()
options.binary_location = r'location_of_opera.exe'
driver = webdriver.Opera(options=options, executable_path=r' location_of_operadriver.exe')
driver.maximize_window()
driver.get("https://www.lambdatest.com")

try:
    myElem_1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'home-btn')))
    print("Home Button click under progress")
    myElem_1.click()

    myElem_2 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/section/div/div[2]/div/form/div[3]/p/a")))
    print("Login button click under progress")
    myElem_2.click()
    sleep(10)
except TimeoutException:
    print("No element found")

sleep(10)

driver.close()

Мы рассмотрим последний пример, который демонстрирует автоматизацию тестов для Opera с Selenium Python, где тестирование Cross Browser выполняется в веб -браузерах Opera, Chrome и Firefox. На этот раз мы используем Pytest Framework, который можно установить, вызывая команду PIP установить Pytest на терминал. Мы используем декоратор @pytest.fixture с областью применения в качестве класса для передачи входных аргументов [Chrome, Firefox и Opera]. Для улучшения производительности с помощью параллельного тестирования мы устанавливаем плагин Pytest-XDIST, используя команду PIP установить Pytest-XDIST. После установки вам необходимо ввести количество браузеров, которые вы хотите открыть и выполнить тесты параллельно через pytest –n = <номер браузеров-в-параллель>. Например, Pytest указывает, что 2 веб -браузера могут работать параллельно в процессе тестирования.

# Example 3 - Pytest framework with Selenium + Opera Webdriver
# Opera 57.0 download link - https://www.softexia.com/windows/web-browsers/opera-57

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.opera.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep

@pytest.fixture(params=["chrome", "firefox", "opera"],scope="class")

def driver_init(request):
    if request.param == "chrome":
        # Local webdriver implementation
        web_driver = webdriver.Chrome()
    if request.param == "firefox":
        # Local webdriver implementation
        web_driver = webdriver.Firefox()
    if request.param == "opera":
        # Local webdriver implementation
        options = Options()
        # Setting the location of the Opera Browser
        options.binary_location = r' location_of_opera.exe'
        # Creation of Opera WebDriver instance
        web_driver = webdriver.Opera(options=options,
                                 executable_path=r' location_of_operadriver.exe')

    request.cls.driver = web_driver
    yield
    web_driver.close()

@pytest.mark.usefixtures("driver_init")
class BasicTest:
    pass
class Test_URL(BasicTest):
        def test_open_url(self):
            self.driver.get("https://www.lambdatest.com/")
            print(self.driver.title)

            sleep(5)

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

Хотя мы можем использовать параллелизацию при выполнении автоматизации тестов селена, это была бы большая задача (с точки зрения масштабирования и экономической эффективности) иметь собственную настройку с различными комбинациями веб-браузеров, операционных систем и устройств. То же самое также применимо, если вы используете локальную настройку селена, так как вам все равно потребуется огромное количество инвестиций, чтобы удовлетворить требования различных узлов/рабов. Следовательно, вы должны перенести активность автоматизации тестов Selenium на такую платформу, как LambDatest, которая поможет вам выполнить автоматизацию браузера Python в облаке. Используя LambDatest, вы можете выполнять автоматические и живые интерактивные тестирование браузера на 2000+ реальных браузерах и операционных системах в Интернете.

Автоматизация браузера Python в облаке

Мы столкнулись с одной проблемой при выполнении автоматизации браузера Python с веб -браузером Opera: несовместимость последней оперы с Selenium Python Webdriver. Несмотря на то, что это звучит как тривиальная проблема, решение для решения ее потребуется значительное количество времени, чтобы найти версии оперы с Selenium Python Webdriver, которые совместимы. Мы уже обсуждали проблемы масштабируемости и обслуживания с локальной настройкой селена для автоматизации тестов селена.

Более эффективным способом является выполнение автоматизации браузера Python для Opera с селенами и Python на облаке. Для этого вам придется создать учетную запись на Lambatest. Как только вы создаете учетную запись, отметьте имя пользователя и токен доступа от https://accounts.lambdatest.com/profile Анкет В примерах, которые мы процитировали до сих пор, мы использовали локальный/удаленный селен Webdriver для проведения тестирования Cross Browser. Вся цель тестирования веб -приложения или веб -продукта состоит в том, чтобы убедиться, что удобство использования в разных браузерах. Тем не менее, ваша команда должна принять осознанное решение, должен ли такой конкретный браузер, как Opera, быть включенным в список, поскольку усилия по тестированию не могут принести долгосрочные выгоды.

Вместо автоматизации тестов с Opera Selenium Python вы можете использовать rambdatest для проведения тестирования в реальном времени. В тестировании в режиме реального времени вы должны ввести тест на URL-адрес, выберите соответствующую операционную версию и комбинацию операционной системы, на которой необходимо протестировать веб-сайт. Вы можете посетить консоль тестирования в реальном времени для начала работы с тестированием.

Если вы используете более популярные браузеры, такие как Chrome, Firefox, Safari и т. Д., Вы можете переносить существующую реализацию Selenium & Python, чтобы она работала с Lambdatest Cloud для достижения автоматизации тестов Selenium. Состояние заданий автоматизации можно проверить, посетив вкладку «Автоматизация» на rambdatest. Используя облачную платформу для тестирования Cross Browser, такую как LambDatest, вы можете проверить функции/функции веб-сайта Web-APP/через тестирование в реальном времени, визуальное тестирование пользовательского интерфейса и тестирование автоматизации.

Вывод

Cross Browser Testing играет важную роль в тестировании любого типа продукта, который попадает в веб -категорию. Хотя 100% автоматизация тестирования невозможна, кроссплатформенная автоматизация браузера Python должна быть рассмотрена для веб-браузеров с широкой пользовательской базой. Для браузеров, таких как Opera, которые не имеют полного принятия, Opera Selenium Python Тестирование принесет минимальные результаты. В таких сценариях вы можете использовать платформу для тестирования Cross Browser, такую как LambDatest, чтобы проверить функции вашего продукта в различных версиях оперного браузера и операционных систем в Интернете. Счастливого тестирования!

Оригинал: “https://dev.to/himanshusheth004/automated-browser-testing-with-opera-and-selenium-in-python-h42”