Селен не работает на сервере, а работает локальноJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Селен не работает на сервере, а работает локально

Сообщение Anonymous »

Я работаю над тем, чтобы использовать Selenium, чтобы обойти вход в систему с пользователем и паролем. Мне удалось заставить его работать локально в Java, используя следующий код (отредактированный для устранения конфиденциальной информации): < /p>

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
log.info("starting web driver");
WebDriver driver = new ChromeDriver(options);
final String url = props.getProperty(configuration.getUrl()).orElse("");
driver.get(url);

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(1000));
return driver;

< /code>
, а затем < /p>

log.info("inputting the username");

driver.findElement(By.("identifier")).sendKeys(credential.getUsername());

driver.findElement(By.("input")).submit();

log.info("inputting the password");

driver.findElement(By.("credentials.passcode")).sendKeys(credential.getPassword());

driver.findElement(By.("input")).submit();

< /code>
Теперь я перешел к сфере Docker, чтобы попытаться сделать то же самое, с такими файлами Docker (снова отредактирован, потому что это собственный код): < /p>
FROM /standalone-chrome:4.23.1 as chrome

FROM /tomcat:10-jdk17-openjdk

ENV JAVA_OPTS="-Xmx4096M -Xms4096M"
ADD target/-*.jar /target/.jar

COPY --from=chrome /usr/bin/google-chrome /usr/bin/google-chrome
COPY --from=chrome /usr/bin/chromedriver /usr/bin/chromedriver

CMD java --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar /target/*.jar -Dlogging.level.org.openqa.selenium=DEBUG

< /code>
Затем в коде я установил свойство системы для пути Chromedriver < /p>


log.info("Setting the path to the driver");
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
log.info("starting web driver");
WebDriver driver = new ChromeDriver(options);
final String url = props.getProperty(configuration.getUrl()).orElse("");
driver.get(url);

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(1000));
return driver;

< /code>
И я всегда получаю одну и ту же ошибку независимо от того, добавляю ли я хромидривер и Google-chrome из автономного в файловую систему Docker или нет, и я устанавливаю «Webdriver.chrome.driver».
org.openqa.selenium.SessionNotCreatedException: Could not start a new session.
Possible causes are invalid address of the remote server or browser start-up failure.

< /code>
Caused by: org.openqa.selenium.WebDriverException: Driver server process died prematurely.

< /code>
As you can see I am trying to get more info from the org.openqa.selenium logs to see if there is something that can point me in the right direction. To me it looks like I need to add something else from the selenium standalone of modify the path to the chromedriver in the code so that at runtime I can properly create my ChromeDriver. Maybe someone here has some clues.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-locally
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»