Я использую селен NodeJS в своем электронном настольном приложении.
"electron-chromedriver": "^4.0.0-beta.1",
"selenium-webdriver": "^4.0.0-alpha.1",
Я следовал электронной документации об использовании селена внутри электронного приложения, и у меня есть код, подобный этому:
let chromeCapabilities = webdriver.Capabilities.chrome();
let chromeOptions = { 'args': ['--disable-infobars'] };
chromeCapabilities.set('chromeOptions', chromeOptions);
capabilities.setPageLoadStrategy('eager');
this.driver = new webdriver.Builder()
.withCapabilities(chromeCapabilities)
.usingServer('http://localhost:9515')
.forBrowser('chrome')
.build();
после кода выше есть цепочка обещаний, которыеделают много разных вещей.
За исключением того, что я запускаю команду chromedriver
в терминале в каталоге ./node_modules/.bin/
.
Запуск ChromeDriver 69.0.3497.106 (857b284701ddf7bef0f14fa76416cf7ca786b411) на порту 9515
Только локальные подключенияразрешены.
Теперь, когда я запускаю весь код, он иногда работает правильно, но иногда он выдает ошибку в терминале, в котором I npm run dev
электронное приложение:
Ошибка: ECONNREFUSEDconnect ECONNREFUSED 127.0.0.1:9515
Я прочитал несколько похожих SO вопросов, но ни один из них не помог.Я не очень понимаю, как это возможно, что какой-то кусок кода иногда работает и иногда вызывает ошибку.
Я также проверил порты 9515
(chromedriver) и 9080
(электронный узелJS) после получения ошибки ивсе выглядит хорошо:
Я сделал еще несколько отладок и обнаружил, что , вероятно, это:
webElement.getAttribute('style')
- это иногда , вызывающее мою ошибку.Когда я удаляю выше (а также .then()
и .catch
после этого конечно) ошибка перестает происходить.Однако я не знаю, как получение встроенных стилей webElement может иметь отношение к отказано в соединении ошибка.