Сеанс не создан Selenium / webdriver при использовании Safari 12 - PullRequest
0 голосов
/ 20 сентября 2018

После обновления до Safari 12 мои автоматические сценарии теперь получают эту ошибку:

SessionNotCreatedError: Request body does not contain required parameter 'capabilities'.

(ошибка не возникает для других браузеров).

Я использую JavaScriptпривязки к веб-драйверу, и когда я создаю веб-драйвер, я использую пары значений ключа withCapability:

var capabs = {
       'browserName' : 'Safari',
       'version' : '12.0'
    }
    browserUnderTest = new webdriver.Builder().
    withCapabilities(capabs)    
    .forBrowser('safari')
    .build();

Я думаю, что проблема связана с самим файлом safari.js, но я не знаю достаточно о том, как он работаетточно определить что-либо.Вот полный текст ошибки:

SessionNotCreatedError: Request body does not contain required parameter 'capabilities'.
    at Object.throwDecodedError (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/lib/error.js:514:15)
    at parseHttpResponse (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/lib/http.js:519:13)
    at doSend.then.response (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/lib/http.js:441:30)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/lib/webdriver.js:769:24)
    at Function.createSession (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/safari.js:253:41)
    at createDriver (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/index.js:170:33)
    at Builder.build (/Users/qualit/Documents/autotests/node_modules/selenium-webdriver/index.js:660:16)
    at Object.<anonymous> (/Users/qualit/Documents/autotests/K8_autotest.js:354:6)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)

Кто-нибудь имеет какие-либо идеи о причине этого или исправления?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Это также будет работать, если вы получите сообщение об ошибке «await» при попытке решения @mjdease выше.

new webdriver.Builder()
    .usingServer(new safari.ServiceBuilder().addArguments('--legacy').build().start())
    .forBrowser('safari')
    .build(); 
0 голосов
/ 21 сентября 2018

Эта проблема возникает из-за того, что Safari 12 использует новый протокол W3C webdriver ( source ), который несовместим с последним стабильным пакетом selenium-webdriver (v3.6)

safaridriver может быть передан флаг --legacy для использования старого протокола.Непосредственно в командной строке это будет сделано следующим образом: /usr/bin/safaridriver --legacy

Этот флаг может быть установлен для драйвера в вашей программе узла следующим образом:

const webdriver = require('selenium-webdriver');
const safari = require('selenium-webdriver/safari');

new webdriver.Builder()
    .usingServer(await new safari.ServiceBuilder().addArguments('--legacy').build().start())
    .forBrowser('safari')
    .build();

Вот документация по ServiceBuilder API - https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/safari_exports_ServiceBuilder.html

Пара билетов GitHub также охватывает это:

...