Вот мой файл докера.
ОТ узла: 17.2.0
ПОЛЬЗОВАТЕЛЬ root
РАБОЧИЙКАТАЛОГ /LT
RUN apt-получить обновление
RUN apt-get install git --yes
КОПИРОВАТЬ/ЛТ.
КОПИРОВАТЬ /LT/тест .
КОПИРОВАТЬ ["/LT/package.json", "."]
# Установите Google Chrome
ВЫПОЛНИТЬ apt-получить установку wget
ЗАПУСК wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
ЗАПУСК apt-get install ./google-chrome*.deb --yes
ENV CHROME_BIN=/usr/bin/google-chrome
ЗАПУСТИТЬ установку npm
ЗАПУСК npm ci
ЗАПУСТИТЬ npm установить nodejs
ЗАПУСК npm установить мокко -g
ЗАПУСК npm установить chromedriver -g --unsafe-perm
ЗАПУСК npm установить selenium-webdriver
ЗАПУСТИТЬ npm установить webdriver-manager
#ЗАПУСТИТЬ обновление webdriver-manager
CMD ["узел", "./test/script1.js"]
Ниже приведен мой файл javascript nodejs, который использует хром для запуска приложения и входа в систему.
требуют("хромдрайвер");
const {By,Key,Builder} = require("selenium-webdriver");
const chrome = require('selenium-webdriver/chrome');
асинхронная функция getAuthCode(){
постоянный URL = "https://abcd.com";
//Чтобы дождаться, пока браузер соберется и запустится должным образом
пусть драйвер = ждите нового Builder()
.forBrowser("хром")
.setChromeOptions (новый chrome.Options (). Без головы ())
//.setChromeOptions(new chrome.Options().addArguments(['--no-sandbox','-headless', '--disable-dev-shm-usage']))
.строить();
ждать driver.get(url);
console.log(драйвер);
const wait = ms => new Promise (разрешить => setTimeout (разрешить, мс));
ждать ждать(1 * 20 * 1000);
await driver.manage().window().setRect({ ширина: 1552, высота: 840 });
await driver.findElement(By.id("emailInput")).click();
await driver.findElement(By.id("emailInput")).sendKeys("[email protected]");
await driver.findElement(By.id("кнопка отправки")).click();
ждать ждать(1 * 20 * 1000);
ждать driver.quit();
вернуть «некоторые данные»;
}
асинхронная функция testAuthCode()
{
var cCode = ожидание getAuthCode();
console.log(cCode);
}
код проверки подлинности();
Когда я запускаю свой файл компоновки докеров, используя тот же файл докеров, который указан выше, я получаю следующую ошибку.
WebDriverError: неизвестная ошибка: не удалось запустить Chrome: аварийное завершение работы.
-узлы-1 | (неизвестная ошибка: файл DevToolsActivePort не существует)
-узлы-1 | (Процесс, запущенный из папки chrome /usr/bin/google-chrome, больше не работает, поэтому ChromeDriver предполагает, что Chrome потерпел крах.)
-узлы-1 | в Object.throwDecodedError (/LT/node_modules/selenium-webdriver/lib/error.js:539:15)
Я знаю причину: он не может найти chromedriver по пути по умолчанию «/usr/bin/google-chrome».
Либо
- Мне нужно установить хром в заданное по умолчанию местоположение
Или же
- укажите путь к тому месту, где фактически установлен хром.
В любом случае, как мне это сделать в JavaScript или докере?
PS: Сценарий отлично работает в моей локальной среде Windows.