Как узнать версию selenium
Получить версию браузера с помощью selenium webdriver
Как я могу использовать версию браузера?
6 ответов
на capabilities свойство-это словарь, содержащий информацию о самом браузере, поэтому это должно работать:
этот ответ привел меня по правильному пути, но специфичен для python, и тема более широкая. Итак, я добавляю ответ для Java, который был немного сложнее. В это время я использую селен 2.25.0.
Если ваша упаковка вашего WebDriver так, что это EventFiring вам придется сделать пользовательскую реализацию EventFiringWebDriver.
просто публикация, потому что это была проблема, с которой я столкнулся.
хотя это может не совсем ответить на вопрос выше, это все еще может быть полезно для тех, кто ищет способ кодирования теста на основе различных моделей поведения, которые они получают из разных браузеров (например, Firefox vs Chrome). Я искал это в то время, когда наткнулся на эту нить, поэтому я подумал, что добавлю ее, если она может помочь кому-то еще.
на Python, если вы просто ищете браузер, который вы тестируете (например, firefox, chrome, ie и т. д..), тогда вы могли бы использовать.
. в если заявление. Это предполагает, что вы уже назначили водитель в веб-браузер, который вы тестируете (например, Firefox, Chrome, IE и т. д..). Однако, если вам поручено протестировать несколько версий одного и того же браузера, вам понадобится что-то большее драйвер.версия. Надеюсь, это кому-то поможет. Я искал это решение, когда нашел этот поток, поэтому я подумал, что добавлю его на случай, если кому-то еще нужно он.
Если вы используете Chrome, вы можете сделать следующее:
и если вы используете Firefox:
Selenium под Windows: все с начала
Представляю вам перевод моей статьи на Medium.com.
Впервые выпущенная более 30 лет назад Microsoft Windows сегодня является неоспоримым лидером среди настольных операционных систем. Это просто нельзя игнорировать при разработке веб-приложений. В этой статье я хотел бы обсудить некоторые особенности использования Selenium под Windows и предложить простое и проверенное в боевых условиях решение, значительно упрощающее жизнь.
Чем Windows отличается от Linux
В своих предыдущих статьях (первая, вторая, третья) я описал подходы и инструменты с открытым кодом, позволяющие организовать масштабируемый кластер Selenium. Мы также поговорили о том, как при помощи тех же инструментов эффективно запускать тесты на машине разработчика. Во всех статьях в качестве операционной системы использовался Linux. Чем же Windows отличается от Linux с точки зрения Selenium?
Как видите многие современные подходы при работе с Selenium: использование X сервера без монитора и запуск браузеров в контейнерах не работают в Windows. Но можно ли достичь сходной с Linux производительности и обойти известные ограничения Windows? Да, и это проще, чем вы могли бы подумать! В следующих разделах я расскажу как это сделать.
Создаем порядок из хаоса
Мы будем двигаться к поставленной цели шаг за шагом. Для начала сделаем решение как можно проще. Как известно, обычная схема установки Selenium на Windows выглядит так:
Схема состоит из Selenium сервера, запущенного при помощи виртуальной машины Java (JRE), затем исполняемый файл IEDriverServer или EdgeDriver и, наконец, сам браузер — IE или Edge. В этой цепочке есть как минимум одно слабое звено — Selenium сервер и Java. Все потому, что Selenium здесь выступает в роли простого прокси-сервера, который запускает процесс драйвера на случайном порту и затем отправляет все запросы на этот порт. Проксирование сетевого трафика — простейшая задача в любом языке программирования, потому что основная работа выполняется сетевой подсистемой операционной системы. Именно поэтому установка Java (50 и более Мб) и скачивание Selenium server (20 и более Мб) для простого проксирования выглядит чересчур громоздким решением. Более того Selenium сервер плохо работает под нагрузкой:
Как заменить Selenium сервер на Selenoid
Selenoid — это легковесная замена Selenium сервера, написанная на языке Go. Selenoid поставляется в виде одного маленького (около 7 Мб) исполняемого файла и не имеет внешних зависимостей. Для начала использования нужно просто скачать и запустить этот файл. В моей предыдущей статье я кратко описал насколько удобным может быть Selenoid для запуска браузеров в Docker контейнерах — основного его назначения. Второй поддерживаемый режим — это запуск исполняемых файлов вместо контейнеров и проксирование сетевого трафика в них — также, как Selenium сервер делает это с IEDriverServer и EdgeDriver. Заменить Selenium сервер на Selenoid очень просто. Для примера, запустим Internet Explorer при помощи Selenoid:
Запускаем Selenoid вместо Selenium сервера (порт 4444 должен быть свободен) при помощи вот такого файла selenoid.bat :
Запускаем тесты на нескольких рабочих столах
Первый из них — это консольная утилита для ручного переключения между рабочими столами. Команда выглядит примерно так:
Теперь все проблемы с фокусом окон должны уйти.
Немного магии с Selenium capabilities
Простой заменой Selenium на Selenoid и IEDriverServer.exe на headless_ie_selenium.exe мы решили наиболее острые проблемы Selenium под Windows. Давайте сделаем из алмаза бриллиант, выставив несколько полезных capabilities в тестах.
По-умолчанию Internet Explorer использует системные настройки HTTP прокси. Это приводит к тому, что настройки прокси, выставленные в одной сессии «пролезают» и в другие сессии. Для того, чтобы исправить это, выставьте:
Ваше веб-приложение может использовать cookies для хранения важной информации. В Windows эти файлы хранятся отдельно для каждого пользователя и поведение по-умолчанию — переиспользовать выставленные куки между параллельными сессиями. Это может приводить к плавающим тестам. Чтобы избежать переиспользование cookie можно стартовать IE в анонимном режиме:
Также не забудьте выставить:
Заключение
В этой статье я коротко описал основные проблемы, с которыми вы можете столкнуться при запуске Selenium тестов под Windows и предложил простое решение. Я продолжаю утверждать — тесты в Selenium могут не доставлять боли. Нужно только правильно уметь его готовить.
Что такое Selenium?
Время от времени мне приходится распутывать терминологические хитросплетения, связанные с употреблением словосочетаний, в которых встречается слово Selenium – Selenium 2.0, Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Server, Selenium Grid.
Путаница возникает во многом из-за того, что нигде нет чёткого описания всех этих терминов на одной страничке, и я постараюсь восполнить этот информационный пробел.
Selenium
Selenium WebDriver
Selenium WebDriver – это программная библиотека для управления браузерами. Часто употребляется также более короткое название WebDriver.
Иногда говорят, что это «драйвер браузера», но на самом деле это целое семейство драйверов для различных браузеров, а также набор клиентских библиотек на разных языках, позволяющих работать с этими драйверами.
Это основной продукт, разрабатываемый в рамках проекта Selenium.
Selenium WebDriver называется также Selenium 2.0, причина этого будет объяснена ниже.
Как уже было сказано, WebDriver представляет собой семейство драйверов для различных браузеров плюс набор клиентских библиотек для этих драйверов на разных языках программирования:
В рамках проекта Selenium разрабатываются драйверы для браузеров Firefox, Internet Explorer и Safari, а также драйверы для мобильных браузеров Android и iOS. Драйвер для браузера Google Chrome разрабатывается в рамках проекта Chromium, а драйвер для браузера Opera (включая мобильные версии) разрабатывается компанией Opera Software. Поэтому они формально не являются частью проекта Selenium, распространяются и поддерживаются независимо. Но логически, конечно, можно считать их частью семейства продуктов Selenium.
Selenium RC
Selenium RC – это предыдущая версия библиотеки для управления браузерами. Аббревиатура RC в названии этого продукта расшифровывается как Remote Control, то есть это средство для «удалённого» управления браузером.
Эта версия с функциональной точки зрения значительно уступает WebDriver. Сейчас она находится в законсервированном состоянии, не развивается и даже известные баги не исправляются. А всем, кто сталкивается с ограничениями Selenium RC, предлагается переходить на использование WebDriver.
Иногда Selenium RC называется также Selenium 1.0, тогда как WebDriver называется Selenium 2.0. Хотя на самом деле дистрибутив версии 2.0 включает в себя одновременно обе реализации – и Selenium RC, и WebDriver. А вот когда выйдет версия 3.0 – в ней останется только WebDriver.
С технической точки зрения WebDriver не является результатом эволюционного развития Selenium RC, они построены на совершенно разных принципах и у них практически нет общего кода. Объединяет их лишь тот факт, что обе реализации были сделаны в рамках проекта Selenium. Ну, или если быть совсем точным, WebDriver сначала был самостоятельным проектом, но в 2008 году произошло слияние и сейчас WebDriver представляет собой основной вектор развития проекта Selenium.
Selenium Server
Selenium Server – это сервер, который позволяет управлять браузером с удалённой машины, по сети. Сначала на той машине, где должен работать браузер, устанавливается и запускается сервер. Затем на другой машине (технически можно и на той же самой, конечно) запускается программа, которая, используя специальный драйвер RemoteWebDriver, соединяется с сервером и отправляет ему команды. Он в свою очередь запускает браузер и выполняет в нём эти команды, используя драйвер, соответствующий этому браузеру:
Selenium Server поддерживает одновременно два набора команд – для новой версии (WebDriver) и для старой версии (Selenium RC).
Selenium Grid
Selenium Grid – это кластер, состоящий из нескольких Selenium-серверов. Он предназначен для организации распределённой сети, позволяющей параллельно запускать много браузеров на большом количестве машин.
Selenium Grid имеет топологию «звезда», то есть в его составе имеется выделенный сервер, который носит название «хаб» или «коммутатор», а остальные сервера называются «ноды» или «узлы». Сеть может быть гетерогенной, то есть коммутатор и узлы могут работать под управлением разных операционных систем, на них могут быть установлены разные браузеры. Одна из задач Selenium Grid заключается в том, чтобы «подбирать» подходящий узел, когда во время старта браузера указываются требования к нему – тип браузера, версия, операционная система, архитектура процессора и ряд других атрибутов.
Ранее Selenium Grid был самостоятельным продуктом. Сейчас физически продукт один – Selenium Server, но у него есть несколько режимов запуска: он может работать как самостоятельный сервер, как коммутатор кластера, либо как узел кластера, это определяется параметрами запуска.
Selenium IDE
Selenium IDE – плагин к браузеру Firefox, который может записывать действия пользователя, воспроизводить их, а также генерировать код для WebDriver или Selenium RC, в котором выполняются те же самые действия. В общем, это «Selenium-рекордер».
Тестировщики, которые не умеют (или не хотят) программировать, используют Selenium IDE как самостоятельный продукт, без преобразования записанных сценариев в программный код. Это, конечно, не позволяет разрабатывать достаточно сложные тестовые наборы, но некоторым хватает и простых линейных сценариев.
Вот, кажется, и всё.
Если я забыл рассказать про какой-то термин – напишите в комментариях, и я постараюсь добавить его в этот мини-словарик.
Selenium
Selenium — это набор программ с открытым исходным кодом, которые применяют для тестирования веб-приложений и администрирования сайтов локально и в сети. Программы Selenium позволяют автоматизировать действия браузера. Среди программ проекта:
Selenium IDE
Selenium IDE — плагин для браузера Firefoх для записи действий пользователя (тестировщика) и их воспроизведения для тестирования. Является библиотекой Selenium с графическим интерфейсом и возможностями для работы со сценариями тестирования веб-страниц. IDE генерирует код для Selenium RC или Selenium WebDriver, который повторяет записанные действия пользователей.
Selenium RC
Selenium RC (Remote Control) — предыдущий основной продукт Selenium до появления WebDriver в 2007 году. Программа, называемая также Selenium 1.0, являлась средством удаленного управления браузером, но по функциональности сильно уступала WebDriver (Selenium 2.0). Selenium RC продолжает поставляться в дистрибутиве WebDriver, но продукт не развивается — при необходимости сложных тестов вне ограничений первой версии пользователям предлагают воспользоваться второй.
Selenium WebDriver
WebDriver напрямую отправляет команды браузеру, используя его API и получает результаты тестирования. В предыдущей версии Selenium RC принцип работы был другим — программа внедряла код на языке JavaScript в браузер для управления им. WebDriver же использует способ взаимодействия с браузером, максимально близкий к действиям обычного пользователя.
Тестировщик ПО на Java
Освойте ручное и автоматизированное тестирование и получите IT-профессию, даже не имея технического образования. Дополнительная скидка 5% по промокоду BLOG.
Selenium Grid
Selenium Grid — кластер из нескольких Selenium-серверов, которые позволяют управлять браузером удаленно по сети. Grid позволяет организовать сеть, в которой можно запускать большое количество браузеров на большом количестве компьютеров. Параллельное тестирование позволяет тестировщикам экономить время.
Преимущества Selenium
Selenium — бесплатный продукт с открытым исходным кодом для тестирования с поддержкой всех основных языков программирования. Его можно использовать на разных браузерах в разных операционных системах, включая мобильные устройства.
Selenium WebDriver — гибкий инструмент тестирования, который можно легко интегрировать с разными тестовыми фреймворками и другими инструментами тестирования. Это позволяет расширить инструментарий тестировщика и применять его для узких задач, например web crawling и тестирования производительности.
Selenium разрабатывают с 2004 года, и за это время он стал самым популярным инструментом функционального тестирования веб-приложений. Его используют в крупных корпорациях, включая Google.
Недостатки Selenium
В программах Selenium можно тестировать только веб-приложения, функций тестирования сетевых и десктопных приложений в комплекте нет. Также для работы с Selenium нужно владеть продвинутыми навыками программирования и написания скриптов. Новички в тестировании могут пользоваться более простыми аналогами Selenium, например Katalon Studio или UFT.
Быстрый вход в IT без технического образования — за 4 месяца вы на практике поймете основы веб-разработки, научитесь работать с баг-трекерами, тестировать приложения и API, составлять SQl-запросы.
Что должен знать каждый QA-инженер о Selenium 4?
Привет, друзья. Май богат новыми курсами, и прямо сейчас, в преддверии запуска курса «Java QA Engineer», мы продолжаем публиковать полезный материал для QA-специалистов.
Вернемся в август 2018 года, когда сообщество тестировщиков потрясла новость о том, что Саймон Стюарт, один из основателей Selenium, официально утвердил дату релиза и афишировал некоторые основные обновления Selenium 4 на Selenium Conference в Бангалоре. Четвертая версия всеми любимого фреймворка для автоматизации веб-тестирования должна была быть выпущена к рождеству 2018 года.
Дата релиза Selenium 4
Те, кто уже знаком с историей релиза Selenium 3, который тоже должен был случиться к рождеству, предполагали, что новая версия будет закончена к рождеству, но скорее всего не 2018 года. Ровно также, как это произошло с предыдущей версией, которая была выпущена на три года позже официально объявленной даты.
И они были правы! На сегодняшний день (даже с обновленной информацией о выпуске Selenium 4 в феврале 2019 года), официального релиза все еще не было.
Также не поступало какой-то официальной информации о новых датах выпуска со стороны основателей проекта. Однако как мы видим на официальной странице проекта SeleniumHQ на Github, разработчики закрыли только половину задач, которые было необходимо сделать, поэтому справедливо можно предположить, что официального релиза не случится до рождества 2019 года.
В чем важность Selenium 4?
Если вы считаете, что инженеры по автоматизации тестирования – единственные люди в мире, которые должны заботиться о выходе обновления Selenium, вы ошибаетесь. Конечно же, Selenium стал отраслевым стандартом для проведения автоматизированного тестирования. Он считается первоочередным инструментом для тестирования веб-приложений уже слишком масштабных для проведения ручного тестирования.
Остается без внимания и то, что компании, которые в значительной степени полагаются на Selenium – не просто компании, кто имеют в своем штате QA-инженеров, но еще и те, кто пользуется интегрированными инструментами автоматизированного бескодового тестирования на базе того же Selenium. Тестирование без кода на базе Selenium стало настоящим спасением для компаний, которые осознают необходимость в автоматизации, но не имеют в своем штате QA-экспертов, которые могли бы с этим разобраться. Такие инструменты не только делают возможным развертывание для тех, кто имеет базовое представление о веб-браузерах, но и позволяют запускать регрессионные тесты, выполнять синтетический мониторинг и нагрузочное тестирование без каких-либо знаний фреймворка Selenium.
Основные изменения в Selenium 4
Теперь давайте перейдем к списку вещей, которые SeleniumHQ обещали добавить или изменить в следующей версии.
Стандартизация WebDriver W3C
Во-первых, Selenium 4 WebDriver будет полностью стандартизирован W3C. API WebDriver стало актуальным и за пределами Selenium и теперь используется в различных инструментах для автоматизации. Например, на нем основываются такие мобильные инструменты для тестирования, как Appium и iOS Driver. Стандарт W3C также отвечает за совместимость между различными программными приложениями с WebDriver API.
Вот как Selenium Grid взаимодействует с исполняемыми файлами драйверов на данный момент:
Тест в Selenium 3.x взаимодействует с браузером в конечном узле (end node) по протоколу JSON wire в локальной конечной точке (local end). Такой подход требует кодирования и декодирования запросов API.
Судя по обновлениям, которые мы ожидаем увидеть в Selenium 4, тест будет взаимодействовать напрямую без кодирования и декодирования запросов API через протокол W3C. Несмотря на это, в привязке к Java все еще будет обратная совместимость, но в центре внимания будет протокол консорциума W3C. А вот протокол JSON wire использоваться больше не будет.
Над спецификациями W3C WebDriver работают несколько разработчиков, и весь процесс вы можете увидеть на GitHub.
Selenium 4 IDE TNG
Selenium IDE поддерживает Chrome «из коробки». Как известно, Selenium IDE – это инструмент записи и воспроизведения. Теперь он будет доступен со следующим, более богатым и продвинутым функционалом:
Улучшенный Selenium Grid
Каждый, кто когда-либо работал с Selenium Grid знает как сложно его настраивать. Selenium Grid поддерживает выполнение тестов в разных браузерах, операционных системах и машинах, обеспечивающих параллельное выполнение.
В Selenium Grid есть два основных элемента: Hub и Node.
Хаб (hub) работает как сервер, центральный пункт управления всеми тестируемыми машинами в сети. В Selenium Grid всего один хаб, который выделяет определенный узел на выполнение теста в соответствии с его потенциалом.
Узел (node), простыми словами, — тестируемая машина, на которой запущены тесты.
Чтобы узнать больше, советуем вам прочитать полное официальное руководство по Selenium Grid.
До настоящего времени процесс присоединения узла к хабу в Selenium Grid вызывал у тестировщиков серьезные сложности.
В Selenium 4 работа с Grid обещает быть простой, так как больше не будет необходимости настраивать и запускать хабы и узлы отдельно. После запуска сервера Selenium, Grid будет работать одновременно как узел и как хаб.
Selenium 4 будет поставляться с более стабильной версией Selenium Grid. Будут устранены ошибки потокобезопасности и улучшена поддержка Docker.
Улучшенный пользовательский интерфейс Selenium Grid
Еще одним приоритетом в разработке Selenium 4, который был выделен во время официального анонсирования, оказалось создание более удобного пользовательского интерфейса Selenium Grid, который будет отражать всю соответствующую информацию о сессиях, мощности и т.д.
Улучшенная наблюдаемость (observability)
“Пассивная наблюдаемость – это способность делать описательную трассировку»
— Саймон Стюарт
Наблюдаемость, логи и отладка больше не ограничиваются DevOps. В рамках грядущего релиза, трассировка запросов и запись логов с хуками (hooks) будут улучшены, чтобы обеспечить для инженеров по автоматизации возможность отладки.
Документация играет ключевую роль в успехе любого проекта. Документация Selenium не обновлялась с выпуска Selenium 2.0. Это значит, что каждый, кто пытался изучить Selenium в последние несколько лет, пользовался старыми туториалами.
Таким образом, естественно, обновленная и современная документация, которую SeleniumHQ обещает предоставить нам вместе с версией 4.0, стала одним из самых ожидаемых обновлений Selenium в сообществе автоматизации тестирования.
Тем не менее, вы все еще можете получить доступ ко всей существующей документации Selenium.
Selenium 4 в двух словах
Здесь перечислены все основные изменения, которые мы, вероятно, увидим, когда наконец состоится релиз Selenium 4. Если вам интересно узнать больше об истории фреймворка, ее основателях и новых функциях Selenium, мы предлагаем посмотреть это видео с конференции Selenium 2018 года, где был анонсирован релиз.
Пишите комментарии и записывайтесь на день открытых дверей, который пройдет уже 22 мая. До встречи в ОТУС!