Подключитесь к уже запущенному веб-драйверу с помощью selenium js - PullRequest
4 голосов
/ 04 октября 2019

Я не эксперт по Selenium, поэтому я могу кое-что здесь упустить.

  • Одна из программ в корпорации запускает Google Chrome с ChromeDriver.
  • Я бынравится подключаться к этому браузеру из моего кода JavaScript.

Я знаю порт, с которого запускается ChromeDriver:

Starting ChromeDriver 77.0.3865.10 (bc3579f611bbc73331171afe020ec7a45e6ccc55-refs/branch-heads/3865@{#93}) on port 55848

Я пытаюсь подключиться из JS:

const webdriver = require('selenium-webdriver')

void async function() {
    let driver = await new webdriver.Builder().forBrowser('chrome').usingServer('http://localhost:55848/').build();

    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver');
    await driver.findElement(By.name('btnG')).click();
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);

    driver.quit();
}();

Соединение не установлено. Я могу подумать, что этот код пытается запустить новый экземпляр.

Появляется сообщение об ошибке:

SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 77

Я проверил, что запущена версия Chrome 77, и ChromeDriver также77. Этот Chrome, который запускается программным обеспечением corp, на самом деле является переносной версией Chrome. У меня установлен Chrome 76 на моем компьютере. Я могу думать, что код, который я написал, пытается запустить новый экземпляр Chrome. И там версия не совпадает.

Есть идеи как подключиться к существующей? И контролировать это?

ОБНОВЛЕНИЕ:

Мне удалось сделать то же самое с Firefox. Firefox запускается с помощью geckodriver. Я до сих пор не могу подключить его. Сообщение об ошибке:

SessionNotCreatedError: Session is already started

Так что я уверен, что это не связано с версиями Chrome, но он пытается создать новый сеанс вместо того, чтобы подключить существующий.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Да, проблема в версии драйвера Chrome. Получите chromedriver.exe версии 77 ... или вы по-прежнему будете получать эту ошибку, поскольку последняя версия selenium 3.141.59 не поддерживает другие версии chrome. Перейдите по этой ссылке (https://www.seleniumhq.org/download/) и получите последнюю версию chromedriver.exe, и я думаю, что она решит вашу проблему.

0 голосов
/ 09 октября 2019

Ошибка - SessionNotCreatedError: сеанс не создан: эта версия ChromeDriver поддерживает только версию Chrome 77

Ошибка связана с несоответствием между chromedriver.exe и версией chromebrowser. Таким образом, в зависимости от версии браузера, установленной в имеющейся у нас операционной системе, мы можем загрузить chromedriver.exe по ссылке ниже https://chromedriver.chromium.org/downloads

Фактический ответ на вопрос - Да, мы можем подключиться к существующему запущенному селенусервер, установив желаемые возможности, предоставляемые Chrome. Затем эта возможность передается при создании сеанса селена

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "77.0.3865.10:55848");
WebDriver driver = new ChromeDriver(options);

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

@ Edit => Это то, что я смог найти способ передать параметры Chrome в JavaScript. Но, к сожалению, я не нашел setExperimentalOptions метод здесь внутри ChromeOptions. Поэтому я использовал addArguments метод, как показано ниже.

const { Options } = require('selenium-webdriver/chrome');
const options = new Options();
options.addArguments('debuggerAddress=77.0.3865.10:55848');
builder.setChromeOptions(options);
const driver = builder.build();
driver.get('url');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...