В чем преимущество протокола WebDriver перед автоматизированной JavaScript-инъекцией? - PullRequest
0 голосов
/ 14 декабря 2018

W3C определяет протокол WebDriver , который можно использовать для автоматизации ввода пользователя на веб-страницах в браузерах.Его можно использовать с внешними драйверами браузера (такими как Google Chrome Chromedriver или FireFox Gecko Driver), и можно имитировать такие действия, как нажатия кнопок и события зависания (и многие другие).

Однако я мог бы получитьтот же результат, просто внедрив некоторый пользовательский написанный JavaScript-код, который напрямую генерирует события и запускает их в контексте веб-страницы.Я мог бы, например, просто создать экземпляр MouseEvent и отправить его для имитации события щелчка.

Я знаю, что протокол WebDriver - это современный подход к автоматизации браузера, но почему это так?так?Каковы преимущества использования протокола, для которого требуется программное обеспечение, зависящее от браузера, когда я могу просто открыть веб-страницу и запустить внедренный код автоматизации?

Мне, вероятно, все еще понадобится внешнее программное обеспечение для открытия экземпляра браузера и внедрения кода автоматизации, но я не вижу необходимости в полном интерфейсе внешнего браузера для автоматизации событий.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018
  • нет риска конфликтов с другим javascript, работающим на странице
  • работает на ресурсах, которые не являются html-страницами, не имеют dom и не запускает javascript
  • может получить доступфункции (например, журналы браузера), которые внедряют js, не имеют разрешения на запуск
  • управление потоком не нарушается при непредвиденной навигации по страницам, перезагрузке и т. д.
  • легче справиться с переключением между вкладками и окнами, кадры, когда ваш код не работает внутри одного из этих кадров
0 голосов
/ 14 декабря 2018
  • Джейсон Хаггинс начал строить основной режим Selenium (оригинальный) как JavaScriptTestRunner, в котором сценарий автоматизации javascript внедряется в веб-приложение для запуска автоматизации.
  • Same origin policy был одним из основных препятствий для этого режима автоматизации, который гласит, что для выполнения файлов javascript на веб-странице файл javascript должен происходить из того же домена, с которого загружена веб-страница.Например: чтобы запустить функцию javascript из js-файлов на странице www.google.com, файлы javascript необходимо загрузить с самого веб-сервера www.google.com.Браузер не позволяет пользователю вводить файл javascript извне и выполнять его.
  • Так как же Джейсон сделал автоматизацию?Он включил JavaScriptTestRunner в тестируемое веб-приложение.

Ожидать, что тестировщики будут иметь доступ к веб-серверу для включения JavaScriptTestRunner в сервер, нецелесообразно.Кроме того, на производственных серверах это большой NO-GO.

  • RC, а затем возникли проекты WebDriver для решения этих проблем.

С протоколом WebDriver пользователю необходим только доступ к приложениютестируется в браузере для написания автоматизации пользовательского интерфейса.Нет необходимости иметь доступ к внутреннему серверу.

Архитектура WebDriver прекрасно спроектирована так, чтобы иметь 2 объекта (в первую очередь) для автоматизации: WebDriver для управления браузером и поиск WebElements и WebElement для выполнения операций над пользовательским интерфейсом приложения.

// Open chrome
WebDriver driver = new ChromeDriver();
// open url
driver.get("url");
// find element
WebElement someElement = driver.findElement(By.id("some-id"));
// perform operation on element
someElement.click();
...