正确启动/停止 Selenium 独立服务器

时间:2021-01-07 14:34:21

标签: python selenium selenium-webdriver

我将 Selenium 独立服务器用于远程 Web 驱动程序。我想弄清楚的一件事是如何有效地启动/停止它。在他们的文档中,它说

“调用方应该正确终止每个会话,调用 Selenium#stop()WebDriver#quit。”

我想做的是弄清楚如何以编程方式关闭服务器,但这是否有必要?换句话说,是否可以让服务器始终启动并运行,但在每次使用后关闭 session 并使用诸如 driver.quit() 之类的东西?因此,当我不使用它时,服务器会启动,但不会有会话。

2 个答案:

答案 0 :(得分:1)

使用 Selenium standalone server 作为远程 WebDriver 时,您需要在最后调用 quit() 方法以正确终止每个会话。

根据最佳做法,您应该在 quit() 中调用 tearDown() {} 方法。通过发送带有 {"flags":["eForceQuit"]} 的 "quit" 命令调用 quit() DELETEs 当前浏览会话> 最后在 /shutdown EndPoint 上发送 GET 请求。下面是一个例子:

1503397488598   webdriver::server   DEBUG   -> DELETE /session/8e457516-3335-4d3b-9140-53fb52aa8b74 
1503397488607   geckodriver::marionette TRACE   -> 37:[0,4,"quit",{"flags":["eForceQuit"]}]
1503397488821   webdriver::server   DEBUG   -> GET /shutdown

因此在调用 quit() 方法时,Web Browser 会话和 WebDriver 实例被完全杀死。


参考文献

您可以在以下位置找到一些相关的详细讨论:

答案 1 :(得分:0)

你说得对。使用 seleniums driver.quit(),因为它会正确关闭所有浏览器窗口并结束驱动程序的会话/进程。尤其是后者是您想要的,因为您肯定会无头运行脚本。

我有一个 selenium 脚本作为 Raspberry Pi(每小时 cron 作业)无头运行。该脚本在每次迭代结束时调用 driver.quit()。当我执行 -ps A(列出 unix 下的所有活动进程)时,不再显示活动的 selenium/python 进程。

希望能满足您的问题!