Selenium:启动服务器时出现无效的“已经运行”错误

Posted

技术标签:

【中文标题】Selenium:启动服务器时出现无效的“已经运行”错误【英文标题】:Selenium: Invalid "already running" error when starting server 【发布时间】:2011-08-18 12:20:03 【问题描述】:

我正在尝试启动并运行 Selenium 服务器。但是,当我输入:

java -jar selenium-server-standalone-2.0b3.jar

我得到一个例外:

Selenium 已经在端口 4444 上运行。或者其他一些服务正在运行。

我试图阻止它,以防它真的在运行:

http://localhost:4444/selenium-server/driver/?cmd=shutDown

这让我明白了:

错误服务器异常:sessionId 不应为空;本次会议开始了吗?

如果我只是写:

http://localhost:4444/

我明白了:

HTTP 错误:403 禁止代理

想法?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我在部署应用程序的地方启动了 Jboss AP,然后尝试运行 selenium 服务器但无法启动。问题是 Jboss 使用与 Selenium 服务器相同的端口,所以我所做的是在不同的端口上启动 selenium 服务器

解决方案:

java -jar selenium-server-standalone-2.0b3.jar -port 1234 -htmlSuite "*firefox" "http://localhost:8080/" "path to the suite" "path to the results"

【讨论】:

【参考方案2】:

如果您使用 Java 启动 Selenium(而不是通过您可能使用或未使用的任何测试框架),您可以使用以下方法终止所有剩余的 Selenium 实例:

pkill java

这保证会杀死任何 java 遗物(包括 selenium,如果以这种方式启动) - 但在这里要小心 - 需要注意的是,您也可能会杀死其他 proc(由于 pkill 的工作方式)。就我而言,我想杀死在 JVM 中运行的任何东西,所以这为我解决了。

根据下面 Goldberg 的评论,请注意,这不会杀死您系统上运行的任何驱动程序服务或浏览器!

【讨论】:

这不会杀死像 chromedriver 或 geckodriver 这样的衍生驱动程序服务。它也不会杀死浏览器。它只是杀死所有 java 实例,留下孤立的浏览器和驱动程序服务 这是真的,但我的理解是 OP 的问题是他们留下了 Selenium 实例运行(而不是剩余的 chrome/gecko/web 驱动程序实例或浏览器打开),因为 Selenium 必须在 JVM 内部,这个答案只是建议了一种杀死该进程的方法(需要注意的是,如果使用 pkill,它也会杀死任何其他 Java 实例)。但是会更新帖子以反映您的评论:)【参考方案3】:

单线:

kill -9 $(lsof -ti tcp:4444)

【讨论】:

如果您确定您的 selenium 正在端口 4444 上运行,这是一个很好的答案。我为想要杀死通过 java 启动的 selenium 的人提供了一个替代解决方案,它不依赖于端口,尽管它有自己的警告@ 987654321@【参考方案4】:

我有同样的错误,但没有服务器正在运行。 调出java版本是有原因的。确保您运行的是 java 7 或更高版本:

java -version

【讨论】:

这里也一样。在 OSX El Capitan 上,默认的 JDK 1.6 不足以让 Selenium 独立运行正常。使用“brew cask install java”进行更新通过将 JDK 1.8 与已安装的 1.6 版本并排安装为我解决了这个问题。【参考方案5】:

要关闭服务器,您可以使用: http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer

它会给出消息 OKOK ,表示它已关闭。如果服务器未运行,则会显示“此网页不可用”

要检查 selenium 服务器状态,请使用 http://localhost:4444/selenium-server/driver/?cmd=getLogMessages

如果服务器正在运行,它会给出OK,如果没有运行,则会显示网页不可用

【讨论】:

【参考方案6】:

在 OSX 中,如果您遵循来自 @HaloWebMaster (lsof -i -n -P | grep 4444) 的命令,下一步是获取 PID(通常是一个 4 - 5 位数字,表示进程 ID)并运行以下命令:

kill -9 <PID>

除非进程是由另一个用户或 root 启动的,否则您不需要 sudo。

【讨论】:

【参考方案7】:

lsof 在我的情况下没有返回任何结果。

在 Ubuntu 机器上,我必须执行以下操作:

sudo netstat -tapen | grep ":4444 "

回复是这样的:

tcp6       0      0 XXXXXXXXX:4444       :::*                    LISTEN      107        31526       **10479**/java

并终止使用 10479 标识的 Selenium 服务器进程(在我的情况下)

sudo kill 10479

【讨论】:

【参考方案8】:

谢谢,

Andre 的链接对我来说很好用。

因为 4444 是 Selenium 的默认端口,所以也要检查一下。

【讨论】:

【参考方案9】:

这对我有用:

http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer

如果 selenium 服务器已经在端口 4444 上运行,那么它将关闭服务器并显示 好的好的 如果 selenium 没有在这个端口 4444 上运行,那么通过点击上面的 url 会给你 “无法连接”

【讨论】:

它不起作用。它重定向到 selenium 服务器页面,说哎呀! URL 指定了到此帮助页面的路由。有关 Selenium Standalone 的更多信息,请参阅文档和/或访问 wiki。或者您正在寻找 Selenium Standalone 控制台。祝测试愉快!【参考方案10】:

Selenium 提供的错误消息有点令人困惑。它确实应该告诉您您正在犯语法错误。我也有这个问题。确保 cmd 字符串完全像这样:

http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer

这意味着使用完整命令shutDownSeleniumServer,并确保shut 中的s 是小写(这是我的错误)。

希望这会有所帮助。

【讨论】:

【参考方案11】:

如果以上所有方法都不起作用,请保存您的工作并重新启动系统。会解决问题的

【讨论】:

这是一个非常糟糕的解决方法,如果在某种 CI 环境中运行 selenium 是不可能的,更不用说完全不可扩展了(如果您每天收到此错误 10 次会发生什么?10 次重新启动?)我认为你可以做得更好;)【参考方案12】:

如果您使用的是Windows,您可以打开任务管理器并找到java.exe 或javaw.exe 进程并将其杀死。这将释放端口 4444,您应该能够重新启动 Selenium 服务器。

【讨论】:

但是我的任务管理器里没有这些进程。【参考方案13】:

ERROR Server Exception: sessionId should not be null; has this session been started yet? 消息来自 Selenium。如果您看到它,则说明该端口号上正在运行 Selenium 服务器。

【讨论】:

【参考方案14】:

如果您在 127.0.01:4444 上收到 403 错误而不是 404 错误,则说明那里正在运行。 (你肯定它不可能是之前的 Selenium 实例?这将是最合乎逻辑的。)

有时 Selenium 会在意外退出后继续在后台运行。我建议检查正在运行的进程,或者如果其他一切都失败了则重新启动机器。

当 Hudson 要求 Selenium-Server 运行一些测试并且由于某些原因在中间失败时,我经常会遇到这种情况。杀死进程可以解决问题。

【讨论】:

【参考方案15】:

试试这个:

lsof -i -n -P | grep 4444

kill 它说的进程是:4444

【讨论】:

和杀死部分应该像这样kill -9 <PID>

以上是关于Selenium:启动服务器时出现无效的“已经运行”错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试启动 Firefox 时出现 Python selenium 错误

早上在linux下用selenium启动Chrome时出现问题:

Selenium:启动 IE 时出现意外错误。浏览器缩放级别设置为 122%。应该设置为 100%

Firefox 错误:使用 Java 使用 Selenium 3.0.1 启动驱动程序时出现“您的连接不安全”

在查询结果上启动 foreach 循环时出现“不存在数据时尝试读取无效”

在openstack中启动服务器时出现terraform错误