>
我的java应用程序在没有docker的本地ubuntu上正常工作:JDK 11、Spring Boot、Selenium 4.0.0-rc-1、Chromium 97.0.4692.99、ChromeDriver 96.0.4664.45
当我用JDK 11、Spring Boot、Selenium 4.0.0-rc-1、Chrome93.0.4577.82、ChromeDriver 93.0.4577.63将java应用程序迁移到docker(alpine)时,它不工作(但应用程序在使用ubuntu和chrome的docker上运行良好-现在我必须将其迁移到alpine和chrome)
我的java驱动程序片段代码(当然我有更多标准选项,如--head less等):
String chromeDriverLinux = "./config/driver/chromedriver-linux/chromedriver"; //
here is file in target version (93.0.4577.63 for docker)
final ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-debugging-port=9222");
/* commented on non-docker version - i think it may be needed by docker version
when i execute it on local non-docker ver i received error:
Caused by: java.util.concurrent.ExecutionException:
java.util.concurrent.TimeoutException: Request timeout to localhost/127.0.0.1:21933
after 180000 ms
*/
options.addArguments("--remote-debugging-address=0.0.0.0");
options.setBinary("/usr/bin/chromium-browser");
ChromiumDriver driver = null;
driver = new ChromeDriver(options); // here is exception
应用程序异常日志:
driver exception:
org.openqa.selenium.SessionNotCreatedException: Could not start a new session.
Possible causes are invalid address of the remote server or browser start-up failure.
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:565) ~
[selenium-remote-driver-4.0.0-rc-1.jar!/:?]
...
Caused by: org.openqa.selenium.WebDriverException: Driver server process died
prematurely.
Build info: version: '4.0.0-rc-1', revision: 'bc5511cbda'
System info: host: '5c0bff50d486', ip: '172.17.0.2', os.name: 'Linux', os.arch:
'amd64', os.version: '5.13.0-27-generic', java.version: '11.0.14'
Driver info: driver.version: ChromeDriver
pom.xml:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools</artifactId>
<version>${selenium.version}</version>
</dependency>
Dockerfile文件:
FROM azul/zulu-openjdk-alpine:11
RUN addgroup -S spring && adduser -S spring -G spring
RUN mkdir -p config/driver/chromedriver-linux
RUN find config/driver/chromedriver-linux/ -type d -exec chmod 0777 {} \;
RUN find config/driver/chromedriver-linux/ -type f -exec chmod 777 {} \;
ADD config/ /config/
RUN chmod 0777 /config/driver/chromedriver-linux/chromedriver
RUN apk update && apk add --no-cache bash \
alsa-lib \
at-spi2-atk \
atk \
cairo \
cups-libs \
dbus-libs \
eudev-libs \
expat \
flac \
gdk-pixbuf \
glib \
libgcc \
libjpeg-turbo \
libpng \
libwebp \
libx11 \
libxcomposite \
libxdamage \
libxext \
libxfixes \
tzdata \
libexif \
udev \
xvfb \
zlib-dev \
chromium \
chromium-chromedriver \
&& rm -rf /var/cache/apk/* \
/usr/share/man \
/tmp/*
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} bot-app.jar
ENTRYPOINT ["java","-jar","/bot-app.jar"]
EXPOSE 9223 9222
运行dockerfile:
sudo docker build --no-cache=True -t bot-image .
运行容器:
sudo docker network create app_bot_network
sudo docker run --network app_bot_network -p 8080:8080 -p 4444:4444 -p 9223:9222 -p 6900:5900 -it --rm --name bot-container bot-image:latest
在启动docker之前,我还关闭了防火墙和vpn。
那么,错误是什么:SessionNotCreatedException:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败?
这是一个没有驱动程序问题的版本,带有docker端口、网络设置的sth?或者执行浏览器?
当做
我花了一些时间在这方面,并找到了解决办法。
我在我的java代码中从:
String chromeDriverLinux = "./config/driver/chromedriver-linux/chromedriver";
(我在这里复制了最相似的ChromeDriver 93.0.4577.63版本)
收件人:
String chromeDriverLinux = "/usr/bin/chromedriver";
(这里我有与dockerfile apk 93.0.4577.82安装的浏览器完全相同的驱动程序版本)
我有一个奇怪的错误异常,而不是驱动程序版本是其他浏览器版本
我正在尝试使用Selenium Grid运行一个简单的程序(事先不了解Selenium Grid),出现如下错误: 线程“main”org.openqa.selenium.remote中出现异常。UnreachableBrowserException:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。构建信息:版本:“未知”,版本:“未知”,时间:“未知”系统信息:主机:“DEL1-
我是硒的新手。能够在Ubuntu上配置selenium设置。配置详情如下: 谷歌浏览器68.0.3440.84 但每次跑步我都会发现詹金斯的错误: 请推荐我。
我是硒的新手。尝试以下代码,它适用于Firefox。当我尝试Safari时,出现错误。 硒Safari 任何指针如何解决此问题。
后我Chrome版本更新到96.0.4664.55我不能运行我的硒脚本和得到以下错误 我正在使用WebDriverManager。chromedriver()。设置(); 我看到chromedriver的版本是45,我的浏览器是96.0.4664.55。这是导致此问题的原因吗。我试图搜索55版本的驱动程序,但找不到https://chromedriver.chromium.org/download
我正在尝试在Safari上运行我的Selenium测试。我可以在FireFox和IE上运行我的测试,它运行良好,但在Safari上不行。所以可能有人遇到了同样的问题,可以告诉我为什么它不起作用,是的,我已经将WebDriver添加到SafariExtencions:http://prntscr.com/809miw 我有这个错误: 以下是我选择浏览器的方式:
我对Selenium是新手,我用Python编程了一个基本的机器人来玩。第一行代码刚刚启动web浏览器: 它工作正常,允许我完成和测试机器人的其余部分,该部分登录帐户并下载文档。 然后我换成了Java(我需要的最后一种语言),并重复了编程,结果非常简单。初始命令为: 代码对于IDE(Intellij)来说很好,但在执行时会出现错误 在端口51171上启动ChromeDriver 98.0.4758