Приложение роботизированной автоматизации — ошибка, связанная с использованием Selenium с Chrome в Docker ⇐ JAVA
-
Anonymous
Приложение роботизированной автоматизации — ошибка, связанная с использованием Selenium с Chrome в Docker
Я разработал приложение роботизированной автоматизации на базе Java 17 и Maven 3.9.2, которое автоматизирует Chrome с помощью Selenium. для выполнения задач загрузки отчетов. Эта операция работает нормально, если выполняется локально, но при создании образа Docker я столкнулся с проблемой докера, связанной с зависимостями селена.
Это шаги
С помощью этой команды приложение можно запустить в локальной среде разработки. Все зависимости извлекаются через Pom.xml. (перечислены ниже)
mvn clean install -DactiveProfile=dev -DconfigFile=config-dev.properties
Но при попытке собрать этот образ Docker с помощью приведенной ниже команды я получаю этот набор ошибок. (Указано ниже)
docker build --build-arg MAVEN_OPTS="-DactiveProfile=dev -DconfigFile=config-dev.properties" -t selenium-app .
Что вызывает эту ошибку? Следует ли внести какие-либо изменения в файл Docker для обработки зависимостей на основе селена? Я использую JDK 17 и Maven 3.9.2 для локальной сборки, и все работает нормально. Может ли это быть ограничением базового образа и как его следует обновить в файле Docker?
Например # Используйте официальный образ Maven в качестве этапа сборки ОТ maven:3.8-openjdk-17 AS builder
Использованный файл Docker
# Используйте официальный образ Maven в качестве этапа сборки ОТ maven: 3.8-openjdk-17 AS-строитель # Устанавливаем рабочий каталог РАБОЧИЙ ДИАПАЗОН/приложение # Скопируйте исходный код в рабочий каталог КОПИРОВАТЬ. . # Создайте проект Maven и создайте файл JAR. ARG MAVEN_OPTS="-DactiveProfile=dev -DconfigFile=config-dev.properties" ЗАПУСТИТЕ mvn clean install $MAVEN_OPTS # Используйте официальный образ OpenJDK 17 в качестве окончательного изображения ИЗ openjdk:17 # Устанавливаем рабочий каталог внутри контейнера РАБОЧИЙ ДИАПАЗОН/приложение # Скопируйте файл JAR со стадии сборки КОПИРОВАТЬ --from=builder /app/target/report-automation.jar /app/report-automation.jar # Скопируйте соответствующий файл конфигурации на основе профиля Maven. КОПИРУЙТЕ src/main/resources/config-dev.properties /app/src/main/resources/config-dev.properties. # Скопируйте файл Configuration.xlsm из источника в рабочий каталог контейнера. КОПИРУЙТЕ src/main/resources/Configuration.xlsm /app/src/main/resources/Configuration.xlsm. # Откройте порт (если ваше приложение прослушивает определенный порт) #ЭКСПОЗИЦИЯ 8080 # Установите точку входа для контейнера (замените основным классом) ENTRYPOINT ["java", "-jar", "report-automation.jar"] Обнаружены ошибки.
#0 850.1 ОШИБКА КОНФИГУРАЦИИ: u/BeforeClass openBrowser #0 850.1 org.openqa.selenium.remote.NoSuchDriverException: невозможно получить: Возможности {browserName: chrome, goog:chromeOptions: {args: [--remote-allow-origins=*, --headless], расширения: [] , настройки: {download.default_directory: src/main/resources/report/}}}, ошибка Команда не выполнена с кодом: 65, выполнено: [/tmp/selenium-manager1364351565415906507905426336786135/selenium-manager, --browser, chrome, -- вывод, JSON] #0 850.1 ошибка тела запроса или ответа: время ожидания операции истекло #0 850.1 Информация о сборке: версия: «4.11.0», ревизия: «040bc5406b» #0 850.1 Информация о системе: os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-150-generic', java.version: '17.0.2' #0 850.1 Информация о драйвере: driver.version: ChromeDriver # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:25) # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:13) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.generateExecutor(ChromeDriver.java:99) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:88) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:83) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:72) # 0 850.1 в Infra.BasePage.openBrowser(BasePage.java:121) # 0 850.1 в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) # 0 850.1 в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) # 0 850.1 в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) # 0 850.1 по адресу java.base/java.lang.reflect.Method.invoke(Method.java:568) # 0 850.1 в org.testng.internal.MethodInvocateHelper.invokeMethod(MethodIndictionHelper.java:133) # 0 850.1 в org.testng.internal.MethodInvocateHelper.invokeMethodConsideringTimeout(MethodIndictionHelper.java:62) # 0 850.1 в org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385) # 0 850.1 в org.testng.internal.ConfigInvoker.invokeConfigurations (ConfigInvoker.java:321) # 0 850.1 в org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176) # 0 850.1 в org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122) # 0 850.1 по адресу java.base/java.util.ArrayList.forEach(ArrayList.java:1511) # 0 850.1 в org.testng.TestRunner.privateRun (TestRunner.java:794) # 0 850.1 в org.testng.TestRunner.run(TestRunner.java:596) # 0 850.1 в org.testng.SuiteRunner.runTest(SuiteRunner.java:377) # 0 850.1 в org.testng.SuiteRunner.runSequentially (SuiteRunner.java:371) # 0 850.1 в org.testng.SuiteRunner.privateRun(SuiteRunner.java:332) # 0 850.1 в org.testng.SuiteRunner.run(SuiteRunner.java:276) # 0 850.1 в org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) # 0 850.1 в org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96) # 0 850.1 в org.testng.TestNG.runSuitesSequentially (TestNG.java:1212) # 0 850.1 в org.testng.TestNG.runSuitesLocally(TestNG.java:1134) # 0 850.1 в org.testng.TestNG.runSuites (TestNG.java:1063) # 0 850.1 в org.testng.TestNG.run(TestNG.java:1031) # 0 850.1 в org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:308) # 0 850.1 в org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:71) # 0 850.1 в org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:113) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.run (ForkedBooter.java:507) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) #0 850.1 Вызвано: org.openqa.selenium.WebDriverException: команда не выполнена с кодом: 65, выполнено: [/tmp/selenium-manager1364351565415906507905426336786135/selenium-manager, --browser, chrome, --output, json] #0 850.1 ошибка тела запроса или ответа: время ожидания операции истекло #0 850.1 Информация о сборке: версия: «4.11.0», ревизия: «040bc5406b» #0 850.1 Информация о системе: os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-150-generic', java.version: '17.0.2' #0 850.1 Информация о драйвере: driver.version: ChromeDriver # 0 850.1 в org.openqa.selenium.manager.SeleniumManager.runCommand(SeleniumManager.java:151) # 0 850.1 в org.openqa.selenium.manager.SeleniumManager.getDriverPath(SeleniumManager.java:273) # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:22) #0 850.1 ... еще 36 #0 850.1 #0 850.1 ПРОПУСКАЕМАЯ КОНФИГУРАЦИЯ: @AfterClass closeBrowser # 0 850.1 ПРОПУЩЕНО: DownloadReportCSV («Подробный подробный отчет о продажах», «Включить») #0 850.1 Загрузить отчеты в формате CSV pom.xml
4.0.0 org.example автоматизация отчета 1.0-SNAPSHOT 17 17 UTF-8 UTF-8 config.properties org.apache.maven.plugins плагин-компилятора maven 3.9.0 ${maven.compiler.source ${maven.compiler.target ${project.build.sourceEncoding org.apache.maven.plugins maven-resources-plugin 3.3.0 UTF-8 org.apache.maven.plugins плагин-maven-surefire 3.1.2 testng.xml **/*Model.java источник/основной/ресурсы истина Configuration.xlsm разработчик config-dev.properties dev локалка config-localqa.properties localqa org.seleniumhq.selenium селен-java 4.11.0 org.testng testng 7.4.0 com.aventstack экстентотчеты 5.0.9 org.slf4j slf4j-api 2.0.5 org.slf4j slf4j-log4j12 2.0.5 com.opencsv opencsv 5.7.1 org.apache.poi poi-ooxml 5.2.2 org.apache.logging.log4j log4j-api 2.14.1 org.apache.maven.shared maven-invoker 3.2.0 org.apache.logging.log4j log4j-core 2.14.1 org.projectlombok ломбок 1.18.22 предоставлена
Я разработал приложение роботизированной автоматизации на базе Java 17 и Maven 3.9.2, которое автоматизирует Chrome с помощью Selenium. для выполнения задач загрузки отчетов. Эта операция работает нормально, если выполняется локально, но при создании образа Docker я столкнулся с проблемой докера, связанной с зависимостями селена.
Это шаги
С помощью этой команды приложение можно запустить в локальной среде разработки. Все зависимости извлекаются через Pom.xml. (перечислены ниже)
mvn clean install -DactiveProfile=dev -DconfigFile=config-dev.properties
Но при попытке собрать этот образ Docker с помощью приведенной ниже команды я получаю этот набор ошибок. (Указано ниже)
docker build --build-arg MAVEN_OPTS="-DactiveProfile=dev -DconfigFile=config-dev.properties" -t selenium-app .
Что вызывает эту ошибку? Следует ли внести какие-либо изменения в файл Docker для обработки зависимостей на основе селена? Я использую JDK 17 и Maven 3.9.2 для локальной сборки, и все работает нормально. Может ли это быть ограничением базового образа и как его следует обновить в файле Docker?
Например # Используйте официальный образ Maven в качестве этапа сборки ОТ maven:3.8-openjdk-17 AS builder
Использованный файл Docker
# Используйте официальный образ Maven в качестве этапа сборки ОТ maven: 3.8-openjdk-17 AS-строитель # Устанавливаем рабочий каталог РАБОЧИЙ ДИАПАЗОН/приложение # Скопируйте исходный код в рабочий каталог КОПИРОВАТЬ. . # Создайте проект Maven и создайте файл JAR. ARG MAVEN_OPTS="-DactiveProfile=dev -DconfigFile=config-dev.properties" ЗАПУСТИТЕ mvn clean install $MAVEN_OPTS # Используйте официальный образ OpenJDK 17 в качестве окончательного изображения ИЗ openjdk:17 # Устанавливаем рабочий каталог внутри контейнера РАБОЧИЙ ДИАПАЗОН/приложение # Скопируйте файл JAR со стадии сборки КОПИРОВАТЬ --from=builder /app/target/report-automation.jar /app/report-automation.jar # Скопируйте соответствующий файл конфигурации на основе профиля Maven. КОПИРУЙТЕ src/main/resources/config-dev.properties /app/src/main/resources/config-dev.properties. # Скопируйте файл Configuration.xlsm из источника в рабочий каталог контейнера. КОПИРУЙТЕ src/main/resources/Configuration.xlsm /app/src/main/resources/Configuration.xlsm. # Откройте порт (если ваше приложение прослушивает определенный порт) #ЭКСПОЗИЦИЯ 8080 # Установите точку входа для контейнера (замените основным классом) ENTRYPOINT ["java", "-jar", "report-automation.jar"] Обнаружены ошибки.
#0 850.1 ОШИБКА КОНФИГУРАЦИИ: u/BeforeClass openBrowser #0 850.1 org.openqa.selenium.remote.NoSuchDriverException: невозможно получить: Возможности {browserName: chrome, goog:chromeOptions: {args: [--remote-allow-origins=*, --headless], расширения: [] , настройки: {download.default_directory: src/main/resources/report/}}}, ошибка Команда не выполнена с кодом: 65, выполнено: [/tmp/selenium-manager1364351565415906507905426336786135/selenium-manager, --browser, chrome, -- вывод, JSON] #0 850.1 ошибка тела запроса или ответа: время ожидания операции истекло #0 850.1 Информация о сборке: версия: «4.11.0», ревизия: «040bc5406b» #0 850.1 Информация о системе: os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-150-generic', java.version: '17.0.2' #0 850.1 Информация о драйвере: driver.version: ChromeDriver # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:25) # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:13) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.generateExecutor(ChromeDriver.java:99) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:88) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:83) # 0 850.1 в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:72) # 0 850.1 в Infra.BasePage.openBrowser(BasePage.java:121) # 0 850.1 в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) # 0 850.1 в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) # 0 850.1 в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) # 0 850.1 по адресу java.base/java.lang.reflect.Method.invoke(Method.java:568) # 0 850.1 в org.testng.internal.MethodInvocateHelper.invokeMethod(MethodIndictionHelper.java:133) # 0 850.1 в org.testng.internal.MethodInvocateHelper.invokeMethodConsideringTimeout(MethodIndictionHelper.java:62) # 0 850.1 в org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385) # 0 850.1 в org.testng.internal.ConfigInvoker.invokeConfigurations (ConfigInvoker.java:321) # 0 850.1 в org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176) # 0 850.1 в org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122) # 0 850.1 по адресу java.base/java.util.ArrayList.forEach(ArrayList.java:1511) # 0 850.1 в org.testng.TestRunner.privateRun (TestRunner.java:794) # 0 850.1 в org.testng.TestRunner.run(TestRunner.java:596) # 0 850.1 в org.testng.SuiteRunner.runTest(SuiteRunner.java:377) # 0 850.1 в org.testng.SuiteRunner.runSequentially (SuiteRunner.java:371) # 0 850.1 в org.testng.SuiteRunner.privateRun(SuiteRunner.java:332) # 0 850.1 в org.testng.SuiteRunner.run(SuiteRunner.java:276) # 0 850.1 в org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) # 0 850.1 в org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96) # 0 850.1 в org.testng.TestNG.runSuitesSequentially (TestNG.java:1212) # 0 850.1 в org.testng.TestNG.runSuitesLocally(TestNG.java:1134) # 0 850.1 в org.testng.TestNG.runSuites (TestNG.java:1063) # 0 850.1 в org.testng.TestNG.run(TestNG.java:1031) # 0 850.1 в org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:308) # 0 850.1 в org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:71) # 0 850.1 в org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:113) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.run (ForkedBooter.java:507) # 0 850.1 в org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) #0 850.1 Вызвано: org.openqa.selenium.WebDriverException: команда не выполнена с кодом: 65, выполнено: [/tmp/selenium-manager1364351565415906507905426336786135/selenium-manager, --browser, chrome, --output, json] #0 850.1 ошибка тела запроса или ответа: время ожидания операции истекло #0 850.1 Информация о сборке: версия: «4.11.0», ревизия: «040bc5406b» #0 850.1 Информация о системе: os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-150-generic', java.version: '17.0.2' #0 850.1 Информация о драйвере: driver.version: ChromeDriver # 0 850.1 в org.openqa.selenium.manager.SeleniumManager.runCommand(SeleniumManager.java:151) # 0 850.1 в org.openqa.selenium.manager.SeleniumManager.getDriverPath(SeleniumManager.java:273) # 0 850.1 в org.openqa.selenium.remote.service.DriverFinder.getPath(DriverFinder.java:22) #0 850.1 ... еще 36 #0 850.1 #0 850.1 ПРОПУСКАЕМАЯ КОНФИГУРАЦИЯ: @AfterClass closeBrowser # 0 850.1 ПРОПУЩЕНО: DownloadReportCSV («Подробный подробный отчет о продажах», «Включить») #0 850.1 Загрузить отчеты в формате CSV pom.xml
4.0.0 org.example автоматизация отчета 1.0-SNAPSHOT 17 17 UTF-8 UTF-8 config.properties org.apache.maven.plugins плагин-компилятора maven 3.9.0 ${maven.compiler.source ${maven.compiler.target ${project.build.sourceEncoding org.apache.maven.plugins maven-resources-plugin 3.3.0 UTF-8 org.apache.maven.plugins плагин-maven-surefire 3.1.2 testng.xml **/*Model.java источник/основной/ресурсы истина Configuration.xlsm разработчик config-dev.properties dev локалка config-localqa.properties localqa org.seleniumhq.selenium селен-java 4.11.0 org.testng testng 7.4.0 com.aventstack экстентотчеты 5.0.9 org.slf4j slf4j-api 2.0.5 org.slf4j slf4j-log4j12 2.0.5 com.opencsv opencsv 5.7.1 org.apache.poi poi-ooxml 5.2.2 org.apache.logging.log4j log4j-api 2.14.1 org.apache.maven.shared maven-invoker 3.2.0 org.apache.logging.log4j log4j-core 2.14.1 org.projectlombok ломбок 1.18.22 предоставлена
Мобильная версия