Код клея
Код клея - это исполняемый код, чаще всего исходный код, который служит для адаптации различных частей кода, которые в противном случае были бы несовместимы.Клеевой код не обеспечивает никакой функциональности для удовлетворения любой программы требованиям как таковой.Вместо этого он часто появляется в коде, который позволяет существующим библиотекам или программам взаимодействовать между собой, как в языковых привязках или интерфейсах внешних функций .Код клея может быть написан на том же языке, что и код, который он склеивает, или на отдельном языке клея .Клеевой код очень эффективен в средах быстрого прототипирования, где несколько компонентов быстро объединяются в один язык или среду.
JavaScriptTestRunner
Джейсон Хаггинс во время тестирования внутреннего приложения в ThoughtWorks сократилвремя, которое требовалось, чтобы вручную проходить одни и те же тесты с каждым внесенным им изменением, создавая библиотеку Javascript , которая могла бы управлять взаимодействием с веб-страницей, что позволяло ему автоматически перезапускать тесты для нескольких браузеров.Он назвал эту программу как JavaScriptTestRunner .Позже он сделал JavaScriptTestRunner с открытым исходным кодом .Эта библиотека в итоге стала Selenium Core , которая лежит в основе всех функций Selenium Remote Control (RC) и Selenium IDE .
К сожалению, для работы в рамках Одинаковой политики происхождения , Selenium Core необходимо поместить в то же начало, что и Тестируемое приложение (AUT).Поэтому другой инженер ThoughtWork, Пол Хаммант, создал сервер, который будет действовать как HTTP-прокси , маскируя AUT под вымышленным URL, встраивая Selenium Core и набориспытаний и доставки, как если бы они пришли из одного и того же происхождения.Эта система стала известна как Selenium Remote Control (Selenium RC) или Selenium 1 .
Зачем использовать HTTP-прокси
Опять же, когда веб-платформы становились все более сложными и мощными, ограничения изолированной среды Javascript для веб-браузеров все больше ограничивали эффективность Selenium Core .Саймону потребовался инструмент тестирования, который напрямую взаимодействовал с браузером, используя «нативный» метод для браузера и операционной системы, таким образом, избегая ограничений среды Javascript в изолированной среде.Это было, когда WebDriver и Selenium RC были объединены в Selenium 2 .Все реализации WebDriver , которые взаимодействуют с веб-браузерами, начали использовать общий проводной протокол.Этот проводной протокол определил веб-службу RESTful с использованием JSON по HTTP .
Заключение
Короче говоря, функциональность для управления браузером всегда была в библиотеке Javascript , которая обеспечивала взаимодействие с веб-страницей, которая была частью JavaScriptTestRunner и более поздних версий Selenium Core.
В соответствии с диаграммой ниже в отношении различных классов / интерфейсов функциональность для управления браузером обеспечивается с помощью selenium-api
![Selenium_Maven_Dependencies](https://i.stack.imgur.com/r3KOj.png)