selenium 为什么同样的代码在Windows中工作,在CentOS 7中不工作?

ykejflvf  于 2022-11-29  发布在  Windows
关注(0)|答案(1)|浏览(131)

基本上,我有一个java程序什么从网站使用Selenium(Chromedriver)获取数据
同样的java程序在windows上运行时没有任何错误,这是我没有犯任何错误的时候。在CentOS 7中,它运行,但抛出了一些错误&很奇怪。
错误数:

Exception in thread "Thread-6" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code                                  500. Message: unknown error: Chrome failed to start: exited abnormally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that C                                 hrome has crashed.)
Host info: host: 'instance-20221128-2304', ip: '10.0.0.105'
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-1160.76.1.el7.x86_64', java.version: '1.8.0_352'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless], exten                                 sions: []}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless], extensions: [                                 ]}}}]
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:146)
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:156)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:541)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:242)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:157)
        at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:101)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:81)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:70)
        at org.hinoob.bot.BangerFM.fetch(BangerFM.java:55)
        at org.hinoob.bot.BangerFM.lambda$startLoop$0(BangerFM.java:26)
        at java.lang.Thread.run(Thread.java:750)`

我已经按照本指南安装了以下内容:https://www.usessionbuddy.com/post/How-To-Install-Selenium-Chrome-On-Centos-7/
我的谷歌浏览器版本在CentOS:谷歌浏览器107.0.5304.121
我还没有尝试任何东西,因为我不知道该尝试什么。我希望它能像在Windows中一样工作。

6vl6ewon

6vl6ewon1#

Selenium 4.6.0已发布!Selenium管理器简介现在您不需要添加驱动程序路径或任何内容。现在Selenium会自动更新驱动程序。

在你的情况下,我猜这个问题是为chrome驱动程序兼容性问题。
更新您的Selenium版本,如果是Maven项目,则添加以下依赖项

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.6.0</version>
</dependency>

然后删除系统属性,如果你手动添加chromedriver路径,希望你的问题会得到解决。

导致打开浏览器出现问题另一个检查点

1.确保chrome已安装在服务器/PC中
1.如果服务器是headless,则添加参数--headless
1.添加禁用GPU参数
参考https://www.selenium.dev/blog/2022/introducing-selenium-manager/

相关问题