Я не эксперт по 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, но он пытается создать новый сеанс вместо того, чтобы подключить существующий.