Получение журналов селена и скриншотов из сетки обратно в Intern

В моем вопросе о рабочем процессе стажера в случае исключения есть две части:

1. В соответствии со спецификациями Selenium Желаемые возможности, RemoteWebDriver по умолчанию делает снимки экрана при исключениях. (если это не отключено установкой webdriever.remote.quiteExceptions.) Можно ли получить эти снимки экрана в Intern?

2- Я настроил Selenium Grid с несколькими платформами/браузерами и могу успешно выполнять внутренние тесты в сетке. Однако я пытаюсь собрать журналы в своей среде стажера, чтобы мне не приходилось входить в систему на каждой машине в сетке, чтобы просмотреть журналы. Меня особенно интересуют журналы сервера, драйвера и браузера на основе руководства по ведению журналов по селену. . Я попытался добавить следующие конфигурации Intern, используя руководство Selenium Desired Capabilities, но не смог получить никаких журналов:

capabilities: {
'selenium-version': '2.39.0',
'driver': 'ALL',
'webdriver.log.driver':'INFO',
'webdriver.chrome.logfile': 'C:\\intern\\logs \\chromedriver.log',
'webdriver.firefox.logfile':'C:\\intern \\logs\\firefox.log'

person Zagros    schedule 21.02.2014    source источник


Ответы (2)


Чтобы сделать снимок экрана самостоятельно, вы можете позвонить по телефону remote.takeScreenshot().then(function (base64Png) {}), но я не знаю способа получить автоматически сгенерированные снимки экрана — в WebDriver JsonWireProtocol.

Чтобы получить журналы, вы можете вызвать remote.log(typeOfLog).then(function (logs) {}). См. JsonWireProtocol в журнале для получения дополнительной информации. на то, что вы получите обратно.

person C Snover    schedule 21.02.2014
comment
Спасибо за ответ. Не могли бы вы также привести пример функции обратного вызова, когда мне нужно сохранить изображение или войти в рабочую область моего проекта? - person Zagros; 24.02.2014
comment
Кроме того, что касается типов журналов, различаются ли они от одного веб-драйвера к другому? пример для этого тоже был бы хорош! Благодарю. - person Zagros; 24.02.2014

Существует способ захвата автоматически сгенерированных скриншотов. Использование пользовательского репортера (https://github.com/theintern/intern/wiki/Using-and-Writing-Reporters#custom-reporters) мне удалось сохранить снимок экрана и записать журналы консоли браузера в файл.

Как упоминалось в приведенной выше ссылке, когда вызывается обратный вызов темы '/test/fail', он передает тестовый объект. Если веб-драйвер вышел из строя внутри, в этом объекте будет присутствовать переменная test.error.cause.value.screen. Это переменная, в которой хранится снимок экрана, созданный веб-драйвером. Итак, вот что я сделал:

if (test.error.cause.value.screen) {
    //Store this variable into a file using node's fs library
}

Если вы посмотрите на объект ошибки, вы также увидите больше информации об ошибках, зарегистрированных веб-драйвером.

Что касается журналов браузера, @C Snover попал в точку. Но эта информация доступна только внутри удаленного объекта. Этот объект доступен при вызове обратного вызова темы '/session/start'. Итак, что я сделал, так это создал карту, которая сопоставила идентификатор сеанса с удаленного объекта с самим удаленным объектом. И, к счастью, тестовый объект также содержит идентификатор сеанса. Итак, я извлек удаленный объект из своей карты, используя test.sessionId в качестве ключа к карте, а также зарегистрировал журналы браузера. Итак, вкратце, что я сделал:

'/session/start': function (remote) {
    sessions[remote.sessionId] = { remote: remote };
},

'/test/fail': function (test) {
    var remote = sessions[test.sessionId].remote;
    remote._wd.log('browser', function (err, logs) {
        //Store the logs array into a file using node's fs library
    });
}
person Devang Negandhi    schedule 03.04.2014