Selenium для чего нужен
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-запросы.
Что такое Selenium WebDriver?
Эта статья является продолжением более общей статьи «Что такое Selenium?», в которой объясняется, какое положение занимает Selenium WebDriver среди других инструментов автоматизации веб-приложений.
Здесь я постараюсь рассказать более подробно о том, что такое Selenium WebDriver, и почему его бессмысленно сравнивать с TestComplete, QuickTest Pro и другими инструментами автоматизации тестирования. И дело не только в том, что Selenium WebDriver бесплатный и открытый – его столь же бессмысленно сравнивать с другими бесплатными инструментами, такими как Sahi или Robot Framework.
Потому что Selenium WebDriver – это не инструмент для автоматизации тестирования.
А что же это такое?
На этот вопрос можно дать несколько разных ответов, сначала я дам короткие ответы, а потом – более подробные.
Кроме того, я объясню, почему Selenium WebDriver имеет такой убогий и неудобный в использовании интерфейс (набор команд), почему он не генерирует красивые отчёты и почему несмотря на всё это он настолько популярен 🙂
На всякий случай оговорюсь, что хотя в этой статье речь идёт про WebDriver, многие аргументы справедливы и в отношении Selenium RC, но я не буду ничего говорить специально про эту устаревшую версию, потому что её место – на свалке истории.
Итак, что такое Selenium WebDriver?
По назначению Selenium WebDriver представляет собой драйвер браузера, то есть программную библиотеку, которая позволяет разрабатывать программы, управляющие поведением браузера.
Selenium WebDriver – это драйвер браузера
Наверняка каждый, кто сталкивался с компьютерами, даже не айтишник, знает слово «драйвер». Это такая маленькая программа, точнее программная библиотека, которая позволяет другим программам взаимодействовать с некоторым устройством. Драйвер принтера позволяет печатать что-нибудь на принтере. Драйвер диска позволяет читать и писать данные. Драйвер сетевой карты позволяет обмениваться данными с другими компьютерами по сети.
С драйвером пользователи не работают непосредственно. Они работают с прикладными программами, которые, посредством драйверов, взаимодействуют с теми или иными устройствами. Драйвер не имеет пользовательского интерфейса. Постойте, но ведь иногда бывает пользовательский интерфейс для настройки драйвера? Бывает. Но это интерфейс программы для настройки драйвера, а не самого драйвера. Драйвер имеет только программный интерфейс, его назначение состоит в том, чтобы дать возможность прикладным пользовательским программам взаимодействовать с устройством.
Так вот, Selenium WebDriver, или просто WebDriver – это драйвер браузера, то есть не имеющая пользовательского интерфейса программная библиотека, которая позволяет различным другим программам взаимодействовать с браузером, управлять его поведением, получать от браузера какие-то данные и заставлять браузер выполнять какие-то команды.
Исходя из этого определения, ясно, что WebDriver не имеет прямого отношения к тестированию. Он всего лишь предоставляет автотестам доступ к браузеру. На этом его функции заканчиваются.
Впрочем, в рамках проекта Selenium разрабатывается не только драйвер, но ещё несколько сопутствующих продуктов – Selenium Server позволяет организовать удалённый запуск браузера, при помощи Selenium Grid можно построить кластер из Selenium-серверов. Они встают в один ряд с вышеперечисленными инструментами и фреймворками, потому что также участвуют в построении системы запуска тестов. Кроме того, имеется «рекордер», который называется Selenium IDE, он умеет записывать действия пользователя и генерировать код, в котором используется интерфейс WebDriver для выполнения записанных действий.
Но главным в проекте Selenium является именно WebDriver, это ключевой элемент экосистемы Selenium.
Существуют ли другие драйверы? Разумеется.
Внутри каждого коммерческого «интегрированного» инструмента имеются драйверы браузеров, но они как правило не могут быть использованы отдельно вне этого инструмента. Есть и бесплатные открытые драйверы – Watir предоставляет доступ к основным браузерам, WatiN имеет неплохой драйвер для браузера Internet Explorer, Sahi умеет работать с «большой пятёркой» браузеров.
Как сравнить Selenium WebDriver с другими инструментами?
Из всего вышенаписанного можно сделать вывод, что сравнивать WebDriver с каким-нибудь инструментом тестирования типа TestComplete или Sahi бессмысленно. Они находятся в разных весовых категориях. Это всё равно, что сравнивать драйвер принтера с текстовым редактором.
А что можно сравнивать?
Что касается сравнения с «комплексным» инструментами типа TestComplete или Sahi, для этого нужно брать не WebDriver, а полный стек.
Например, стек для технологии Java может быть таким: Jenkins + Maven + Thucydices + JUnit+ WebDriver. К этому добавляются ещё все возможности языка программирования Java, плюс масса плагинов для Maven и Jenkins, а чтобы совсем всё было круто – можно запускать тесты в облаках, используя какой-нибудь сервис типа SauceLabs.
Вот тогда сравнение будет интересным. Но это уже заслуга не только WebDriver, важен весь стек, а не только драйвер браузера. Что касается WebDriver, стоит отметить лишь то, что он прекрасно встраивается практически в любой стек, это одно из его достоинств как «независимого» драйвера.
Разумеется, WebDriver может использоваться не только при тестировании. Ему вообще безразлично, кто и зачем хочет управлять браузером. Вы можете автоматизировать какие-то рутинные задачи. Можете сделать ботов, которые будут флудить в форумах. Можете сделать скрипт, который автоматически снимает скриншоты для документации. Всё что угодно. Драйверу всё равно. Он всего лишь предоставляет доступ к браузеру.
Кроме того, какой бы инструмент вы ни использовали – вполне возможно, что к нему удастся подключить WebDriver, который имеет реализации на самых разных языках – Java, C#, Ruby, Python. И тогда вы в дополнение ко всем возможностям вашего любимого инструмента добавите все достоинства WebDriver. Это стоит потраченных усилий, потому что среди драйверов на данный момент он лучший.
Ну да, я уже несколько раз повторил, что «он лучший», но при этом не привёл сравнения с другими драйверами. И не буду. Потому что есть аргумент, который в перспективе важнее любых сравнений.
Selenium WebDriver – это спецификация интерфейса для управления браузером
Самое главное отличие WebDriver от всех остальных драйверов заключается в том, что это «стандартный» драйвер, а все остальные – «нестандартные».
И это не простая фигура речи.
Организация W3C действительно приняла WebDriver за основу при разработке стандарта интерфейса для управления браузером. Сейчас он находится в состоянии публичного рассмотрения.
Через год-полтора этот стандарт будет утверждён. И тогда реализация интерфейса WebDriver будет возложена на производителей браузеров, а WebDriver как независимый драйвер, возможно, в будущем исчезнет совсем, потому что он будет встроен непосредственно в браузеры.
Таким образом, можно сказать, что Selenium WebDriver это вообще не инструмент, а спецификация, документ, стандарт, описывающий, какой интерфейс браузеры должны предоставлять наружу, чтобы через этот интерфейс можно было браузером управлять.
Пока стандарт обсуждается, производители браузеров уже действуют. В рамках проекта Selenium было разработано несколько референсных реализаций для различных браузеров, но постепенно эта деятельность переходит в ведение производителей браузеров. Драйвер для браузера Chrome разрабатывается в рамках проекта Chromium, его делает та же команда, которая занимается разработкой самого браузера. Драйвер для браузера Opera разрабатывается в компании Opera Software. Драйвер для браузера Firefox пока разрабатывается участниками проекта Selenium, но в недрах компании Mozilla уже готовится ему замена, которая носит кодовое название Marionette. Этот новый драйвер для Firefox уже доступен в девелоперских сборках браузера. На очереди Internet Explorer и Safari, к их разработке сотрудники соответствующих компаний пока не подключились, но кое-какие сдвиги в этом направлении есть, потому что стандарт (даже будущий) обязывает.
В общем, можно сказать, что Selenium это единственный проект по созданию средств автоматизации управления браузерами, в котором участвуют непосредственно компании, разрабатывающие браузеры. Это одна из ключевых причин его успеха.
А что случится после того, как во всех браузерах будет реализован этот стандарт?
Было бы логично ожидать, что производители инструментов тестирования не станут изобретать велосипеды, а будут управлять браузером через стандартный интерфейс. Можно сказать, что все инструменты станут использовать WebDriver для взаимодействия с браузером. Но это будет уже не Selenium WebDriver как независимый драйвер, а Selenium WebDriver как спецификация интерфейса.
Так почему же у него такой примитивный интерфейс?
Набор команд последовательно сокращался, были выброшены такие «повышающие удобство использования» команды как check, uncheck (для чекбоксов), select (для выпадающих списков). Все они сводятся к более простой команде click и поэтому они лишние. Сейчас в интерфейсе WebDriver осталась только одна избыточная команда – это submit, но может быть когда-нибудь и она будет устранена.
Кроме того, структура интерфейса проектировалась таким образом, чтобы можно было описать его на языке IDL (именно это сделано в стандарте W3C) и сделать реализации на различных языках программирования. Поэтому использовался минимум языковых идиом, минимум «скрытых» переменных, интерфейс «тупой и прямолинейный».
Но зато благодаря этой примитивности интерфейса сейчас для интерфейса WebDriver имеются реализации клиентских библиотек на Java, C#, Ruby, Python, JavaScript, PHP, Perl и даже Haskell!
И благодаря той же самой простоте WebDriver прекрасно интегрируется с любыми другими инструментами, встраивается в любой стек. В этом секрет его популярности и быстрого распространения – он не пытается «победить» другие инструменты, вместо этого он интегрируется с ними.
А как же удобство использования?
Эту задачу должны решать расширения, построенные на базе Selenium WebDriver. Именно они должны предоставлять расширенный набор команд, реализуя эти команды через примитивный интерфейс WebDriver. В дистрибутиве Selenium имеется класс Select, предназначенный для работы с выпадающими списками, который является наглядной демонстрацией того, как должны строиться расширения.
Постепенно появляются библиотеки, которые строятся на базе Selenium WebDriver и предоставляют более высокий уровень абстракции: Selenide, fluent-selenium, watir-webdriver, Thucidides. Популярные фреймворки для проектирования тестов позволяют наряду с другими драйверами использовать WebDriver. Среди таких фреймворков можно упомянуть Robot Framework, Capybara и тот же Thucidides.
Рано или поздно должны появиться вспомогательные библиотеки, облегчающие работу с теми или иными наборами виджетов – jQuery, Prototype, ExtJS, GWT и прочими.
Число таких расширений и инструментов будет расти, сложность тоже. Так что вскоре может так случиться, что вы, используя какой-то инструмент, будете выполнять тесты, даже не подозревая о том, что взаимодействие с браузером осуществляется через драйвер Selenium WebDriver.
Стоит ли тогда вообще изучать Selenium?
Может быть лучше изучать эти библиотеки и инструменты более высокого уровня?
Надеюсь, всё вышесказанное позволит вам лучше понять, какое место Selenium WebDriver занимает в общей картине мира и как он соотносится с другими инструментами. Если всё ещё остались непонятные моменты – задавайте вопросы в комментариях, я постараюсь всё прояснить.
Полезен ли селен для организма человека? Как принимать этот минерал?
Для правильного выполнения всех своих функций человеческий организм должен получать достаточное количество микро- и макроэлементов. Про такие значимые биологически элементы, как калий, кальций, магний, железо, йод и другие, слышал почти каждый. Однако нашему организму нужно и множество других веществ, которые почему-то не так популярны среди широких масс.
Примером незаслуженно забытого элемента, о котором, кроме врачей и профессиональных диетологов, почти никто не знает, может служить селен. Именно об этом минерале и будет рассказано в этой статье:
Что такое селен, чем он полезен для организма?
Селен — это микроэлемент, один из минералов, необходимых нашему организму для правильного и здорового функционирования. Роль селена для организма человека заключается в том, что он в составе селенопротеинов, участвует в метаболизме гормонов щитовидной железы, защите ДНК и клеток от окислительных повреждений, а также в улучшении способности иммунной системы бороться с инфекциями, бактериями и вирусами.
В природе селен представлен в двух формах: органической и неорганической. Неорганическая содержится в почве, затем передается растениям и в процессе химических реакций принимает органическую форму. Далее эти микроэлементы могут поступать с растительной пищей в организмы животных, откладываясь в скелетных мышцах. Некоторое количество селена содержится и в морепродуктах, так как этот минерал может находиться не только в почве, но и в воде.
Таким образом, человек может получить селен из пищи растительного и животного происхождения. Наибольшее содержание этого минерала имеют:
Точного содержания селена в этих и других продуктах назвать нельзя, так как оно зависит от содержания селена в воде или почве на конкретном участке, где были выловлены рыбы, выращены зерновые продукты или корм для скота, мясо которого и употребляет человек.
Еще пара важных замечаний: уровень селена в любых продуктах довольно низкий, однако при сбалансированном питании здоровому человеку этого должно хватать. Дополнительно снизить содержание селена в еде может термическая обработка.
Чем селен полезен для организма человека?
У здоровых людей дефицит селена встречается редко, но недостаток этого минерала может увеличить риск возникновения или усугубить влияние ВИЧ, болезни Крона, Альцгеймера и многих других заболеваний. Вообще, разные ученые рекомендуют увеличивать дозировку селена при десятках различных заболеваний: от астмы до артрита, от перхоти до бесплодия. Однако результаты их исследований до сих пор вызывают вопросы у научного сообщества, поэтому их необходимо подтвердить контрольными экспериментами.
Наиболее распространено применение селена в следующих целях:
Практически все полезные свойства селена основаны на том, что он относится к антиоксидантам — это соединения, предотвращающие повреждение тканей от свободных радикалов (побочных продуктов метаболизма). Свободные радикалы необходимы организму, но табачные изделия, спиртные напитки, длительный стресс и даже физические нагрузки могут вызвать их избыток. Это приводит к оксидативному (окислительному) стрессу, который слишком сильно вредит здоровым клеткам.
Микроэлемент селен для организма полезен тем, что нейтрализует избыточные свободные радикалы. Таким образом, одним из ключевых значений селена для организма человека является защита тканей от окислительных повреждений.
Это свойство селена для организма приводит к еще одному положительному эффекту. Одновременно с уменьшением окислительного стресса, селен защищает от разрушения дезоксирибонуклеиновую кислоту (ДНК) и противостоит раковым клеткам. Существуют десятки исследований (суммарное количество их участников — более 350 тысяч человек), которые доказали, что достаточный уровень селена снижает риск возникновения онкологических заболеваний.
Другие исследования свидетельствуют о пользе селена для человека, проходящего лечение злокачественных опухолей радиотерапией. Этот микроэлемент позволяет снижать многочисленные побочные эффекты этого вида терапии.
Следующее полезное свойство селена для организма человека — защита сердца и сосудов. Результаты 25 научных экспериментов зафиксировали, что повышение уровня селена в полтора раза снижает вероятность возникновения проблем с сердечно-сосудистой системой почти на четверть. Связано это с тем, что чрезмерные окислительные процессы приводят к атеросклерозу и накоплению атеросклеротических бляшек в кровеносных сосудах — это может привести к инсульту или сердечному приступу.
Еще одна причина, для чего селен нужен в организме человека — снижение вероятности возникновения и прогрессирования дегенеративных заболеваний. Дополнительно: статистика говорит, что у большинства людей с болезнью Альцгеймера наблюдается дефицит селена. Пока сложно сказать, что в этом факте служит причиной, а что — следствием. Однако уже доказано, что дополнительный прием селена помогает улучшить память и умственные способности у людей с заболеванием Альцгеймера.
Другое существенное следствие антиоксидантного эффекта селена — защита щитовидной железы и ее способности производить гормоны. Больше всего селена содержится именно в щитовидной железе, поэтому он является одним из важнейших элементов для ее функционирования. Щитовидная железа очень важна, так как она регулирует обмен веществ и обеспечивает рост и развитие всего организма. Недостаток селена — распространенная причина дисфункции щитовидной железы, например, аутоиммунного тиреоидита или гипотиреоза.
И последняя польза селена в качестве защитника организма от окисления связана с усилением иммунитета. Здоровье любого человека зависит от иммунной системы, которая защищает организм от патогенных бактерий, вирусов и паразитов. Недостаток селена вредит иммунным клеткам и приводит к замедлению иммунной реакции. Дополнительно исследования говорят об укреплении иммунитета у людей со СПИДом, различными видами гриппа, туберкулезом и гепатитом С после увеличения принимаемой дозы селена.
Нормы употребления селена
Как уже было сказано выше, для поддержания своего здоровья человеку необходимо не так много селена:
Дефицит селена может возникать у пациентов с нарушенной функцией кишечника, а также у людей, питающихся едой, выращенной на селенодефицитной почве. Повышенная потребность возникает при беременности и кормление грудью — в эти периоды женщинам необходимо 60 и 70 мкг/сутки соответственно. Во время стресса или регулярных физических нагрузок также рекомендуется увеличить дозу селена хотя бы до 70 мкг в сутки. Еще повышенная дозировка необходима людям с некоторыми заболеваниями: злокачественными опухолями, болезнями Альцгеймера, Паркинсона, склерозом, заболеваниями, нарушающими функционирование щитовидной железы, и сердечно-сосудистыми заболеваниями. Однако в любом из этих случаев суточную дозировку селена должен назначать врач.
Важно! Взрослому человеку в сутки нельзя превышать дозировку в 400 микрограмм, считая селен, полученный и из биодобавок, и из продуктов питания.
Минерал, принимаемый в прописанных врачом дозах, не вызывает побочных эффектов. Но значительная передозировка может вызвать неприятный запах изо рта, лихорадку, тошноту, а в некоторых случаях — проблемы с печенью, почками и сердцем.
Лучшие биологически активные добавки с селеном
Если Вы входите в группу риска дефицита селена, то, возможно, стоит задуматься о приеме биодобавок с этим минералом. Можно выбрать комплексные витаминно-минеральные добавки или препараты, содержащие только необходимый минерал. В любом случае необходимо выбирать только надежных производителей и покупать добавки в специализированных магазинах. В этой статье будет небольшой разбор 2 лучших брендов биодобавок и их продуктов с селеном.
Первая компания — Solgar — американский производитель биодобавок премиального качества по хорошим ценам. «Солгар» работает с 1947 года, известен по всему миру и имеет множество положительных отзывов. Важно также то, что компания поставляет большие объемы своей продукции в Россию. Это значит, что вероятность покупки подделки предельно низкая.
Наиболее распространенные биодобавки с селеном от «Солгар» — бездрожжевые Solgar Selenium 250 таблеток по 200 мкг и 100 штук по 100 мкг. Стандартная цена этих добавок — 2400 и 750 рублей соответственно. Главными полезными свойствами селена для организма компания называет антиоксидантное воздействие и укрепление иммунной системы. Принимать добавку нужно по таблетки в день (но не более 200 мкг) во время приема пищи.
Вторым надежнейшим брендом также является американская компания — Now Foods. В отличие от «Солгар» она занимает нишу бюджетного сегмента, хотя качество ее продукции остается на высоте. Все остальные преимущества у Solgar и Now Foods также одинаковы.
NOW Selenium чаще всего встречается в 2 упаковках: 180 капсул по 200 мкг и 250 таблеток по 100 мкг. Различий в приеме нет: производитель также рекомендует принимать по таблетки в день во время еды. Противопоказание всего одно — непереносимость вещества Однако в любом случае перед применением биодобавки стоит проконсультироваться с врачом.
Использование Selenium сервера для автоматизации работы с внешними ресурсами
Время чтения: 6 минут
Отправим вам статью на:
Прочитав заглавие статьи, Вы, наверняка, зададитесь вопросом «А зачем это нужно?» с последующими утверждениями, что «это же медленно!», да и вообще «это же совсем не целевое использование такого замечательного средства для тестирования как Selenium server». Всему свое время и, в этой небольшой статье я попытаюсь ответить на ваши вопросы.
Начнем с того, что кратко расскажем, что же такое Selenium и для чего он нужен. Главным образом Selenium — это инструмент для автоматизации тестирования Web-приложений, как проект был начат в июне 2004 года и на текущий момент включает несколько инструментов. В совокупности набор инструментов Selenium предоставляет богатый набор возможностей для тестирования Web-приложений различных типов. Ключевыми особенностями Selenium является возможность запуска в различных браузерах и использование нескольких типов селекторов для идентификации элементов страницы (например, XPath или CSS селекторы).
Набор инструментов Selenium
Selenium включает несколько инструментов с разным назначением:
Selenium 2 (или Selenium Webdriver)
Новое направление развития проекта Selenium: результат слияния двух проектов WebDriver и Selenium1. Каждый из этих продуктов обладал своими достоинствами, поэтому разработчики пришли к мысли слияния проектов для получения более надежного и развитого инструмента автоматизации.
Selenium 1 (или Selenium Remote Control)
На протяжении длительного времени Selenium RC был основным направлением развития проекта, пока в результате слияния WebDriver и Selenium не появился Selenium 2, более новый и мощный инструмент, однако Selenium 1 все еще активно поддерживается.
Selenium IDE
Представляет собой инструмент для разработки и создания прототипов тестовых сценариев. Это плагин для браузера Firefox, с простым и удобным интерфейсом для создания автоматизированных тестов.
Selenium Grid
Selenium Grid позволяет масштабировать большие тестовые наборы, а также запускать тесты, которые необходимо выполнить в нескольких окружениях. Selenium Grid позволяет запускать тесты параллельно, то есть разные тесты могут быть запущены в одно и то же время на нескольких удаленных машинах.
Использование Selenium не в целях тестирования в реальном проекте
В качестве примера рассмотрим реальный проект по реализации одной крупной Web-системы, которая должна была взаимодействовать с большим количеством внешних ресурсов. О внутренней структуре и организации сторонних ресурсах мы ничего не знаем, хотя спокойно можем создать в них новый аккаунт или можем использовать уже существующий с помощью предоставляемого web-интерфейса. Реализуемая система кроме этого представляла собой «агрегатор аккаунтов» сторонних ресурсов и способна была выполнять определенный набор операций над ними. По большей степени набор операций был одинаков для всех сторонних ресурсов. Операции выполнялись с помощью использования предоставляемого ресурсом API, но при добавлении очередного ресурса в систему разработчики столкнулись с проблемой ограниченности и недостаточности API, кроме того некоторые ресурсы не предоставляли ровным счетом никакого API, а включить их в создаваемую систему было просто необходимо.
Таким образом, одни ресурсы предоставляли довольно хорошую реализацию API, с полным набором необходимых методов, другие же либо имели скудное API с ограниченными возможностями, либо не имели его вообще. Кроме этого, предоставляемое ресурсами API зачастую имело разный интерфейс и требовало использование дополнительных специфических библиотек, включение которых в проект, значительно увеличивало его размер, поэтому говорить о каком-то стандартном методе использования API речи и не шло. Единственный вариант общей реализации в этом случае заключался в имплементации набора адаптеров для каждого нового ресурса.
Поэтому возникла идея использования «Selenium-подхода». Действительно, мы ведь можем сымитировать действия пользователя на стороннем ресурсе. Запустить реальный браузер, забить значения в поля, сделать необходимую цепочку переходов и выйти из аккаунта.
Конечно, вы скажете, что можно анализировать и разбирать запросы. Зачем поднимать сервер для этого? Это же медленно! Гораздо проще проанализировать пары каждого запроса в цепочке переходов и реализовать их с помощью какой-нибудь CURL-based библиотеки на сервере. Ответ будет довольно простым, из личного опыта разработчиков системы следует вывод: во-первых, разработка в этом случае затягивается, по причине довольно сложных запросов и ответов, средств защиты, например:
Во-вторых, внешние ресурсы часто что-то меняют, и оперативно внести изменения в реализуемую систему гораздо проще и быстрее в случае «Selenium»-подхода, чем в “переанализе» request/response-пар.
Итак, подытожим причины:
Но что же со временем и стабильностью исполнения, скажете вы? Единственное действительно уязвимое место данного подхода. Использование данного подхода имеет смысл для автоматизации действий, не критичных ко времени исполнения, возможно, массовые действия с использованием очереди. Время исполнения той или иной операции с использованием Selenium-подхода всегда можно оптимизировать, как это было сделано и в реализуемой системе. Что касается стабильности, то ее тоже довольно легко можно вывести на приемлемый уровень путем реализации дополнительных компонент, направленных на увеличение стабильности работы с Selenium-сервером, занимающихся мониторингом процессов, так или иначе связанных с работой Selenium-сервера. Кроме того, в сети можно найти большое количество статей о том, как ускорить работу Selenium-сервера.
Установка и настройка Selenium-сервера
Рассмотрим на примере CentOS последовательность шагов по установке и настройке Selenium-сервера, с последующим его использованием в PHP:
Качаем Selenium (версия может отличаться на момент развертывания сервера):
Пишим скрипт загрузки (прилагаться не будет):
Не забудьте параметры, необходимые для полноценного использования Selenium-сервера:
Ставим браузер (рекомендации: лучше google chrome, не забудьте сперва добавить репу /etc/yum.repos.d/google.repo):
Возможно вам придется добавить WebDriver для браузера Google Chrome:
Добавляем возможность работы с Selenium-сервером из PHP:
Итог
Использование Selenium сервера для автоматизации действий пользователя не в целях тестирования имеет смыл в проектах, не критичных ко времени исполнения. Очевидные плюсы заключаются в простоте разработки и внесении изменений — не нужно анализировать каждый запрос. Отличное «расширение» существующего API до требуемого уровня 😉
Подпишитесь
Оставьте адрес, и каждый месяц мы будем высылать свежую статью
о новых трендах в разработке програмного обеспечения.