Селен (программное обеспечение)
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2017 г. ) |
Первоначальный выпуск | 2004 г |
---|---|
Стабильная версия | 4.23.0 [1]
/ 19 июля 2024 г |
Репозиторий | |
Написано в | Селеновый сервер: Java ; Selenium WebDriver (работает без Selenium Server), официальная поддержка: JavaScript ( Node.js ), Python , Ruby , Java или C# [2] |
Операционная система | Кросс-платформенный |
Тип | тестирования программного обеспечения Платформа для веб-приложений |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | селен |
Selenium — это зонтичный проект с открытым исходным кодом , включающий ряд инструментов и библиотек, предназначенных для поддержки автоматизации браузеров . [3] Он предоставляет инструмент воспроизведения для создания функциональных тестов в большинстве современных веб-браузеров без необходимости изучения языка сценариев тестирования (Selenium IDE). [4] Он также предоставляет тестовый предметно-ориентированный язык (Selenese) для написания тестов на ряде популярных языков программирования, включая JavaScript ( Node.js ), C# , Groovy , Java , Perl , PHP , Python , Ruby и Scala . Selenium работает на Windows , Linux и macOS . Это программное обеспечение с открытым исходным кодом , выпущенное по лицензии Apache License 2.0 .
Selenium — это платформа автоматизации с открытым исходным кодом для веб-приложений, позволяющая тестировщикам и разработчикам автоматизировать взаимодействие с браузером и выполнять функциональное тестирование. Благодаря универсальным инструментам, таким как WebDriver, Selenium поддерживает различные языки программирования и облегчает кроссбраузерное тестирование, что делает его идеальным выбором для эффективной и масштабируемой веб-автоматизации.
История
[ редактировать ]Selenium изначально был разработан Джейсоном Хаггинсом в 2004 году как внутренний инструмент в ThoughtWorks . [5] Позже к Хаггинсу присоединились другие программисты и тестировщики из ThoughtWorks, прежде чем к команде присоединился Пол Хаммант и возглавил разработку второго режима работы, который позже стал «Selenium Remote Control» (RC). В том же году исходный код инструмента был открыт.
В 2005 году Дэн Фабулич и Нельсон Спроул (с помощью Пэта Лайтбоди) сделали предложение принять серию патчей, которые превратят Selenium-RC в то, чем он стал наиболее известен. На том же заседании управление Selenium как проектом продолжится в качестве комитета, а представителями ThoughtWorks станут Хаггинс и Хаммант. [6]
В 2007 году Хаггинс присоединился к Google. Вместе с другими людьми, такими как Дженнифер Беван, он продолжил разработку и стабилизацию Selenium RC. В то же время Саймон Стюарт из ThoughtWorks разработал превосходный инструмент автоматизации браузера под названием WebDriver. В 2009 году после встречи разработчиков на конференции Google Test Automation Conference было решено объединить два проекта и назвать новый проект Selenium WebDriver или Selenium 2.0. [7]
В 2008 году Филипп Ханригу (тогда работавший в ThoughtWorks) создал «Selenium Grid», который представляет собой концентратор, позволяющий одновременно запускать несколько тестов Selenium на любом количестве локальных или удаленных систем, тем самым минимизируя время выполнения тестов. Grid предлагал как открытый исходный код возможности, аналогичные внутреннему/частному облаку Google для Selenium RC. Пэт Лайтбоди уже создал частное облако для HostedQA, которое впоследствии продал компании Gomez, Inc.
Название «Селен» происходит от шутки, которую Хаггинс написал в электронном письме, высмеивая конкурента по имени Меркьюри , говоря, что отравление ртутью можно вылечить, принимая добавки селена. Остальные, получившие письмо, взяли это имя и побежали с ним. [8]
Компоненты
[ редактировать ]Selenium состоит из нескольких компонентов, каждый из которых играет определенную роль в разработке автоматизации тестирования веб-приложений . [9]
Селен IDE
[ редактировать ]Selenium IDE — это полная интегрированная среда разработки (IDE) для тестов Selenium. Он реализован как надстройка Firefox и как расширение Chrome . Он позволяет записывать, редактировать и отлаживать функциональные тесты. Ранее он был известен как Selenium Recorder. Selenium-IDE был первоначально создан Шиньей Касатани и передан в дар проекту Selenium в 2006 году. Selenium IDE начал активно поддерживаться в 2018 году. [10] [11] [12] [13]
Сценарии можно автоматически записывать и редактировать вручную, обеспечивая поддержку автозаполнения и возможность быстрого перемещения команд. Скрипты записываются на Selenese , специальном языке тестовых сценариев для Selenium. Selenese предоставляет команды для выполнения действий в браузере (нажмите ссылку, выберите вариант) и для получения данных с результирующих страниц. Selenese служит языком для создания команд Selenium, которые используются при тестировании веб-приложений. Эти команды, адаптированные к HTML-тегам элементов пользовательского интерфейса, облегчают проверку их существования. Они помогают Selenium понять конкретные действия или операции, которые необходимо выполнить.
Клиентский API Selenium
[ редактировать ]В качестве альтернативы написанию тестов на Selenese тесты также можно писать на различных языках программирования. Затем эти тесты взаимодействуют с Selenium, вызывая методы в Selenium Client API. В настоящее время Selenium предоставляет клиентские API для Java , C# , Ruby , JavaScript , R и Python .
Селеновый пульт дистанционного управления
[ редактировать ]Selenium Remote Control (RC) — сервер, написанный на Java , который принимает команды для браузера через HTTP . RC позволяет писать автоматические тесты для веб-приложения на любом языке программирования, что позволяет лучше интегрировать Selenium в существующие среды модульного тестирования. Чтобы упростить написание тестов, проект Selenium в настоящее время предоставляет клиентские драйверы для PHP , Python , Ruby , .NET , Perl и Java . Драйвер Java также можно использовать с JavaScript (через движок Rhino ). Для запуска тестового примера html необходим экземпляр сервера selenium RC, а это означает, что порт должен быть разным для каждого параллельного запуска. [ нужна ссылка ] Однако для тестового примера Java/PHP только один экземпляр Selenium RC должен работать непрерывно. [14]
Selenium Remote Control представлял собой рефакторинг Driven Selenium или Selenium B, разработанный Полом Хаммантом, которого Джейсон считал соавтором Selenium. Исходная версия напрямую запускала процесс для рассматриваемого браузера с тестового языка Java, .NET, Python или Ruby. Проводной протокол (в свое время называвшийся «Selenese») был повторно реализован в каждом языковом порту. После рефакторинга, проведенного Дэном Фабуличом и Нельсоном Спроулом (с помощью Пэта Лайтбоди), между сценарием экзамена по вождению и браузером появился промежуточный процесс-демон. Среди преимуществ — возможность управлять удаленными браузерами и меньшая необходимость портировать каждую строку кода на постоянно растущее число языков. Selenium Remote Control полностью заменил линейку кода Driven Selenium в 2006 году. Шаблон браузера для «Driven»/«B» и «RC» представлял собой ответ/запрос, который впоследствии стал известен как Comet .
Selenium RC долгое время служил флагманской средой тестирования всего проекта Selenium. И значительно [ редакция ] Selenium RC — это первый и главный инструмент автоматического веб-тестирования, который позволил пользователям использовать предпочитаемый ими язык программирования. [15] [16]
С выпуском Selenium 2 поддержка Selenium RC была официально прекращена в пользу Selenium WebDriver.
Селен ВебДрайвер
[ редактировать ]В основе Selenium лежит Selenium WebDriver, интерфейс для написания инструкций, которые взаимозаменяемы в разных браузерах. Это преемник Selenium RC. Selenium WebDriver принимает команды (отправленные на Selenese или через клиентский API) и отправляет их в браузер. Это реализуется с помощью драйвера браузера, специфичного для браузера, который отправляет команды браузеру и получает результаты. Большинство драйверов браузера фактически запускают и получают доступ к приложению браузера (например, Firefox , Google Chrome , Internet Explorer , Safari или Microsoft Edge ); Существует также драйвер браузера HtmlUnit , который имитирует браузер с помощью безголового браузера HtmlUnit.
В отличие от Selenium 1, где для запуска тестов требовался сервер Selenium, Selenium WebDriver не требует специального сервера для выполнения тестов. Вместо этого WebDriver напрямую запускает экземпляр браузера и управляет им. Однако Selenium Grid можно использовать с WebDriver для выполнения тестов на удаленных системах (см. ниже). Там, где это возможно, WebDriver использует встроенные функции уровня операционной системы, а не команды JavaScript на основе браузера для управления браузером. Это позволяет обойти проблемы с тонкими различиями между собственными командами и командами JavaScript, включая ограничения безопасности. [17]
По состоянию на начало 2012 года Саймон Стюарт (изобретатель WebDriver), который тогда работал в Google, и Дэвид Бернс из Mozilla вели переговоры с W3C о том, чтобы сделать WebDriver стандартом Интернета. В июле 2012 года рабочий проект был опубликован, а рекомендации последовали в июне 2018 года. [18] Selenium WebDriver (Selenium 2.0) полностью реализован и поддерживается в JavaScript ( Node.js ), Python , Ruby , Java , Kotlin и C# . По состоянию на 2021 год Selenium 4 является кандидатом на выпуск. [19]
Примеры
[ редактировать ]Ниже приведены некоторые из самых простых инструкций, которые можно сделать:
Питон
[ редактировать ]from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
#This example requires Selenium WebDriver 3.13 or newer
with webdriver.Firefox() as driver:
wait = WebDriverWait(driver, 10)
driver.get("https://google.com/ncr")
driver.find_element(By.NAME, "q").send_keys("cheese" + Keys.RETURN)
first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3")))
print(first_result.get_attribute("textContent"))
Ява
[ редактировать ]import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;
import java.time.Duration;
public class HelloSelenium {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
try {
driver.get("https://google.com/ncr");
driver.findElement(By.name("q")).sendKeys("cheese" + Keys.ENTER);
WebElement firstResult = wait.until(presenceOfElementLocated(By.cssSelector("h3")));
System.out.println(firstResult.getAttribute("textContent"));
} finally {
driver.quit();
}
}
}
С#
[ редактировать ]using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
class HelloSelenium
{
static void Main()
{
using(IWebDriver driver = new FirefoxDriver())
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
driver.Navigate().GoToUrl("https://www.google.com/ncr");
driver.FindElement(By.Name("q")).SendKeys("cheese" + Keys.Enter);
wait.Until(webDriver => webDriver.FindElement(By.CssSelector("h3")).Displayed);
IWebElement firstResult = driver.FindElement(By.CssSelector("h3"));
Console.WriteLine(firstResult.GetAttribute("textContent"));
}
}
}
Селеновая сетка
[ редактировать ]Selenium Grid — это сервер, который позволяет тестам использовать экземпляры веб-браузера, работающие на удаленных машинах. В Selenium Grid один сервер действует как центральный узел. Тесты связываются с хабом для получения доступа к экземплярам браузера. Хаб имеет список серверов, которые предоставляют доступ к экземплярам браузера (узлам WebDriver), и позволяет тестам использовать эти экземпляры. Selenium Grid позволяет запускать тесты параллельно на нескольких машинах и централизованно управлять различными версиями браузера и его конфигурациями (а не в каждом отдельном тесте).
Возможность запускать тесты на удаленных экземплярах браузера полезна для распределения нагрузки тестирования на несколько компьютеров и запуска тестов в браузерах, работающих на разных платформах или операционных системах. Последнее особенно полезно в тех случаях, когда не все браузеры, которые будут использоваться для тестирования, могут работать на одной и той же платформе. [20]
См. также
[ редактировать ]- Автоматизация Appium , мобильных и настольных приложений с помощью WebDriver
- Приемочное тестирование
- Капибара (программное обеспечение)
- Учитывая-когда-то
- Список инструментов веб-тестирования
- МедиаВики Селен
- Регрессионное тестирование
- Робот Фреймворк
Ссылки
[ редактировать ]- ^ «Выпуск 4.23.0» . 19 июля 2024 г. Проверено 27 июля 2024 г.
- ^ «Загрузки» . Селен .
- ^ «Проект автоматизации браузера Selenium» . селен.dev . 16 марта 2020 г. Проверено 1 ноября 2021 г.
- ^ Abdullaiev, ОА; Ibrahimova, LV (2020). "Review of testing software: Selenium software" (PDF) . Винницкий национальный технический университет . УДК 004.457.
- ^ «О селене» .
- ^ «История селена» . www.selenium.dev . Проверено 11 августа 2021 г.
- ^ «Проект Селен» . thenewcircle.com . НовыйКруг . Проверено 29 июня 2014 г.
- ^ Крил, Пол (6 апреля 2011 г.). «Набор тестов веб-приложений Selenium с открытым исходным кодом для поддержки iPhone и Android» . Инфомир . Архивировано из оригинала 5 мая 2011 года . Проверено 9 мая 2012 г.
Selenium был назван так потому, что Хаггинс, недовольный инструментами тестирования, представленными на рынке, искал название, которое позиционировало бы продукт как альтернативу коммерческому программному обеспечению для тестирования Mercury Interactive QuickTest Professional. По словам Хаггинса, название «Селен» было выбрано потому, что минеральные добавки селена служат лекарством от отравления ртутью.
- ^ Мойзуддин, Хаджа (7 июня 2018 г.). «Компоненты инструмента автоматизации Selenium» . dzone.com . Зона DevOps . Проверено 10 июля 2019 г.
- ^ «Он вернулся! Selenium IDE возрождается с Дэйвом Хэффнером» . testpodcast.com . 24 декабря 2018 г.
- ^ Дэйв, Тур де (6 августа 2018 г.). «Selenium IDE мертва, да здравствует Selenium IDE!» . Официальный блог Selenium IDE . Получено 27 ноября 2019 г. - через seleniumhq.wordpress.com.
- ^ Колантонио, Джо (27 ноября 2018 г.). «Потрясающее возвращение Selenium IDE» . testguild.com . Проверено 27 ноября 2019 г.
- ^ Сарджент, Эл (19 марта 2019 г.). «Список новых возможностей Selenium IDE» . applitools.com . Проверено 18 октября 2021 г.
- ^ «Селеновый пульт дистанционного управления» . seleniumhq.org . Проверено 13 ноября 2019 г.
- ^ «Selenium 1 (Selenium RC) :: Документация по Selenium» . www.selenium.dev . Проверено 20 декабря 2020 г.
- ^ sparkdatabox_author (16 октября 2019 г.). «Селен | Spark Databox» . Проверено 20 декабря 2020 г.
{{cite web}}
:|last=
имеет общее имя ( справка ) - ^ «Архитектура приложений с открытым исходным кодом: Selenium WebDriver» . aosabook.org . Проверено 7 февраля 2016 г.
- ^ Смит, Майкл (5 июня 2018 г.). «WebDriver переходит на рекомендации W3C» . Блог W3C . Проверено 10 сентября 2018 г.
- ^ «Загрузки» . селен.dev . Проверено 29 сентября 2021 г.
- ^ «Селеновая сетка» . Проект автоматизации браузера Selenium . Проверено 9 сентября 2020 г.