Глоссарий
Selenium
Selenium это открытый набор средств, который ведёт браузеры по WebDriver, общему перечню приказов от отдельной программы-водителя.
Что лежит под ней
Ваш сценарий говорит не с браузером. Он говорит с небольшой программой-водителем, а та уже говорит с браузером так, как нужно этому браузеру.
Водитель посередине
Отдельная программа стоит между сценарием и окном и переводит каждый приказ в то, что браузер понимает.
Много языков и один перечень приказов
Java, Python, C sharp, Ruby и JavaScript шлют одни и те же приказы, и поэтому на этой дороге написано столько старых наборов.
Опубликованный общий уговор
Перечень приказов это уговор для всей паутины, а не канал одного изготовителя, поэтому один сценарий достаёт до браузеров разных изготовителей.
Как подключить её к профилю здесь
Программа открывает профиль и отвечает портом, на котором слушает его управляющий канал. Водитель, направленный на слушающий адрес, берёт это окно на себя вместо того, чтобы запускать своё.
- 1
Включите локальный интерфейс
Он выключен, пока вы не включите его в окне программы, а после этого экран покажет адрес и пропуск.
- 2
Откройте профиль и прочтите порт
В ответе придёт номер порта, и на основном движке этот порт принадлежит ровно одному профилю.
- 3
Направьте водителя на этот адрес
Водителю говорят пользоваться уже существующим адресом отладки, а не запускать что-либо самому.
Ваш браузер прямо сейчас
Значения прочитаны в том браузере, в котором вы это читаете. Первая строка носит имя этого самого уговора, и почти любая проверка на робота смотрит её первой.
Ваша машина прямо сейчас
- Признак управления
- измеряем на вашей машине
- Строка браузера
- измеряем на вашей машине
- Платформа
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Что придётся принести самому
Этой дороге нужны части, которых здесь не ставит ничто. Назвать их честнее, чем пообещать поддержку, которая рассыплется на первом же прогоне.
Программа-водитель
Вы скачиваете её сами и сами держите свежей, а программа её не везёт и не проверяет, есть ли она у вас.
Совпадение версий
Водитель, собранный под другой выпуск браузера, с этим говорить не станет, поэтому его версия обязана идти следом за движком.
Сама обвязка
Готовые примеры написаны для библиотек, которые говорят по каналу напрямую, поэтому эту дорогу вы собираете сами.
Признак управления на этой дороге
Браузер, запущенный водителем, обычно объявляет, что им управляют, и одно это значение кончает проверку раньше всего прочего.
Профиль здесь запускает программа, и ключи запуска снимают этот признак, а подключение после запуска его обратно не возвращает.
Поведение всё равно читают отдельно
Часто путают с этим
Признак, носящий её имя
Значение, которое читает страница, названо по этому уговору, но ставит его и вторая дорога. Имя это история, а не изготовитель.
Puppeteer
Та библиотека говорит по собственному каналу браузера без водителя посередине и цепляется прямо к адресу профиля.
Облачная сетка машин
Сетка раскладывает набор испытаний по многим машинам. На каждой из них всё равно работают один водитель и один браузер.
Чего это не делает
- Она не приезжает вместе с ARMANOS. Программы-водителя в сборке нет, здесь её никто не скачивает и никто не проверяет, какая версия у вас.
- Она не открывает наш движок с вашим профилем. Водитель, которому дали запустить браузер самому, получит обычный браузер, без отпечатка, прокси и печенья, из которых профиль и состоит.
- У неё нет готового примера в программе. Готовые примеры подключаются по каналу напрямую, а эту дорогу вы строите из порта, пришедшего в ответе.
- Она не достаёт до закрытого профиля. Порт открывается вместе с окном и пропадает вместе с ним, поэтому набор просит свежий при каждом запуске.
Проверить
За каждой строкой выше стоит файл, который можно открыть, и стенд, который его держит.
- Ключи запуска каждого профиля, включая тот, что снимает признак
- apps/desktop/src/lib/forkEngine.js
- Признак управления читается с настоящей страницы в настоящем движке
- apps/desktop/test/webdriver-flag.js
- Ход открытия профиля, порт в его ответе и застава перед ним
- apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
- Где профиль объявляет порт, который он слушает
- apps/desktop/src/lib/forkPage.js
Вопросы
- Она вообще умеет вести здешний профиль?
- Подключение к открытому профилю работает, потому что в ответе на просьбу открыть профиль приходит порт, который он слушает. Нет здесь программы-водителя и примера, написанного под эту дорогу.
- Почему в ответе есть порт, а не только адрес гнезда?
- Потому что этой дороге нужны узел и порт, а другим библиотекам нужен адрес гнезда. Оба лежат в одном ответе, и взять можно любой.
- Можно дать водителю запустить браузер самому?
- Можно, и вы получите обычный браузер вместо своего профиля. Всё, из чего состоит профиль, накладывает программа при запуске.
- Ставит ли подключение признак управления?
- Само по себе нет. Значение снято ключами запуска, которые собирает программа, и они одни и те же, кто бы ни повёл окно потом.
- Какая версия водителя нужна?
- Та, что отвечает выпуску Chromium, из которого собран наш движок, а выпуск назван на странице движка. Несовпавший водитель отваливается на подключении, а не тихо, и это лучший из двух исходов.
Рядом с этим
Возьмите настоящий профиль в свой набор испытаний
Включите локальный интерфейс, откройте профиль из кода и отдайте порт тому водителю, который у вас уже есть.