【问题标题】:Closing Firefox windows running in headless mode关闭以无头模式运行的 Firefox 窗口
【发布时间】:2019-01-14 18:55:51
【问题描述】:

我在 Python 和 Firefox 窗口中以无头模式使用 selenium。问题是我已经使用this useful answer 在无头模式下创建了许多 Firefox 窗口,如果你问我的话。

首先,我不明白为什么this answer 除了我自己的投票之外,没有任何投票,即使它看起来工作正常。有人可以解释吗?也许我错过了一些东西。 ¯\_(ツ)_/¯

其次,不幸的是,我没有在 Python 代码中使用 driver.close() 关闭那些以无头模式运行的窗口,而且它们有很多。我想知道,我现在怎样才能将它们全部关闭?

我找到的唯一解决方案(UbuntuMacOS High Sierra)是这样的:

ps aux | grep firefox | awk '{print $2}' | xargs kill

...,应该在终端中运行。

但它不仅以无头模式关闭所有 Firefox 窗口。它实际上会杀死所有与 Firefox 相关的进程。

【问题讨论】:

    标签: python selenium window


    【解决方案1】:

    通过 geckodriver 搜索,然后杀死你的 gecko 进程。

    netstat -tlp | egrep '(firefo|vnc|gecko)'
    

    它是这样的:

    0      0 localhost:9090          *:*                     LISTEN      11970/geckodriver
    

    【讨论】:

    • 目前我无权访问Ubuntu。我正在MacOS High Sierra 上尝试这个,但它在那里不起作用。然而,我的“解决方案”适用于UbuntuMacOS High Sierra。 ¯\_(ツ)_/¯
    • 我正在 Ubuntu 中试用它。我不确定egrep 是如何工作的。你能解释一下吗? netstat -tlp | grep firefox 确实为我提供了有关无头模式下进程的信息。你是怎么发现的?而且,我不知道如何从行中提取 PID :(
    • egrep 将模式视为正则表达式。另外,netstat -tlp | egrep '(firefo|chro|gecko)' | awk '/:* */ {split($NF,a,"/"); print a[2],a[1]}' .... 这可以帮助您提取 PID。
    【解决方案2】:

    当我尝试接受的答案时,它也杀死了一些可见的 Firefox 窗口。使用htop,我发现所有使用python selenium 以无头模式运行的firefox 窗口都对应于命令/usr/lib/firefox/firefox --marionette --headless -foreground -no-remote -profile <tmp file>。 因此,在 Unix 堆栈交换中使用 this answer,我想出了:

    for pid in $(ps -ef | grep "firefox --marionette -headless" | awk '{print $2}'); do kill -9 $pid; done`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 2018-07-02
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      相关资源
      最近更新 更多