Захват Selenium Web-драйвера Json -wire HTTP-взаимодействий - PullRequest
1 голос
/ 28 мая 2020

Selenium Webdriver взаимодействует с любым браузером через HTTP, как обсуждалось - здесь . У меня есть несколько автоматизированных тестов, написанных с использованием селена через фреймворк Protractor в JavaScript. 1003 *

Каким будет самый простой способ записать эти взаимодействия?

Ответы [ 2 ]

0 голосов
/ 11 июня 2020

Поскольку взаимодействие осуществляется через HTTP, я смог перехватить HTTP-вызовы, используя библиотеку - httflow . Как только я получил HTTP-вызовы, я продезинфицировал HTTP-дамп, чтобы удалить нерелевантные вызовы, а затем сопоставил области кода транспортира с вызовами, определив настраиваемое сопоставление.

0 голосов
/ 28 мая 2020

Protractor - это оболочка вокруг Webdriverjs, поэтому вы должны иметь возможность использовать команду addEventListener для добавления любого поддерживаемого браузером событий , которые будут охватывать большинство действий пользователя и запросы DOM

Обратите внимание: это поддерживается только в chrome в настоящее время

Кроме того, это экспериментальная функция в webdriver. js, поэтому необходимо добавить

var client = WebdriverJS.remote({
    logLevel: 'verbose',
    experimental: true, // <-- enables browser side eventhandling
    desiredCapabilities: {
        browserName: 'chrome'
    }
});

И затем зарегистрируйте такие события, как

client
    .url('http://google.com')
    .addEventListener('dblclick','#hplogo', function(e) {
        console.log(e.target); // -> 'id("hplogo")'
        console.log(e.type); // -> 'dblclick'
        console.log(e.clientX, e.clientY); // -> 239 524
    })
    .doubleClick('#hplogo') // triggers event
    .end();

Вы можете использовать removeEventListener, чтобы отменить регистрацию любых зарегистрированных слушателей

Равномерная обработка в среде Node.js также поддерживается, как подразумевается этим

WebdriverJS inherits several function from the NodeJS EventEmitter object

Если вы хотите также захватить сетевой трафик c, вы можете сделать это с помощью browsermob-proxy

Здесь - руководство на браузереmob-proxy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...