【问题标题】:How To Hide Chrome Web Driver Icon (Python-Selenium)如何隐藏 Chrome Web 驱动程序图标(Python-Selenium)
【发布时间】:2017-07-20 20:42:51
【问题描述】:

合理更新

目标:在后台运行 chrome 网络驱动程序在停靠栏或应用程序栏中不显示应用程序图标。仅供参考:我已经可以无头运行 chrome,但我无法在我的应用栏中隐藏或不显示 chrome 图标。

原因:我正在构建一个可以并行访问各种网站的应用程序,我不希望 chrome 应用程序图标显示正在发生的同步任务。我想在后台运行这些任务。

当前代码带有将显示无头 chrome 的 chrome 选项

chrome_options = Options()
chrome_options.add_argument('headless')
chrome_options.add_argument('window-size=1200x600')
driver = webdriver.Chrome(executable_path=executable_text, chrome_options=chrome_options)

研究

chrome 选项列表:https://peter.sh/experiments/chromium-command-line-switches/

解释如何进行无头 chrome 的众多帖子之一:Selenium - chrome Driver fail to start in background (without a start-up window)

如何隐藏 chromedriver 应用程序图标不显示?除了设置 'headless' chrome 选项之外,我还可以设置一个 chrome 选项吗? 这更像是一个操作系统设置,需要在后台运行 chromedriver 吗?我能够在无头模式下成功运行多个 chromedrivers,但最好不要在 Dock 或应用程序托盘中显示 chrome 图标,类似于 phantomjs 不启动应用程序图标的方式。

^在上图中,这些是以无头模式运行的 chromedrivers 显示在我的 Dock 中,理想情况下,对于我的程序,我什至不想显示这些图标,因为无论如何它都是后台处理。

【问题讨论】:

  • 参见:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: python-3.x google-chrome selenium selenium-chromedriver chrome-options


【解决方案1】:

更新(这对我来说至少可以在我的 Mac 上隐藏 chromedriver 图标):

我无法找到 Chrome Option 来完成隐藏 Dock 中出现的 chromedriver 图标。但是,我可以编辑 Chrome 的 Info.plist 文件,作为我程序的一部分,使用 LSBackgroundOnly 键来完成(隐藏 chromedriver 图标)的技巧。

在 Chrome 的 Info.plist 中,我以编程方式输入:

<key>LSBackgroundOnly</key>
<string>1</string>

在使用 python3 代码的 Mac 上,我使用 os.system 执行终端命令,使用 defaults 在程序执行时输入 LSBackgroundOnly key,然后在程序执行结束时,我从Info.plist。

像这样

1)

defaults write /Applications/Google\ Chrome.app/Contents/Info.plist LSBackgroundOnly -string '1'

2)

defaults delete /Applications/Google\ Chrome.app/Contents/Info.plist LSBackgroundOnly

AS INFO:这很棘手,因为如果您在程序执行期间没有正确添加/删除 LSBackgroundOnly,您的普通 chrome 应用程序可能会以后台模式启动。根据我的经验,在最坏的情况下,您可能必须从 Info.plist 文件中手动删除 LSBackgroundOnly,然后重新启动计算机以使 Chrome 退出后台模式。

我在程序执行后从我的程序的 Info.plist 文件中删除了 LSBackgroundOnly 键,因为只有在启动 chromedrivers 时该键才需要在文件中。之后,我希望能够使用常规 Chrome 应用程序而不会在后台模式下打开它。但是,如果您了解您的程序执行并处理您的异常,这肯定会正确隐藏图标,并且使用常规 Chrome 应用程序不会有什么不同。

黑客愉快。

【讨论】:

    【解决方案2】:

    使用Selenium 是不可能的。我真的不明白你为什么要这样做。是否有真正的目的,或者只是你不想让它表现出来?即使 Chrome 应用程序以无头模式显示在 Dock 上,它也能正常工作。

    但是,如果您希望您的图标在打开时不出现在 Dock 中,则需要通过修改该应用程序的 Info.plist 文件来禁用它。

    在你的Info.plist Chrome 中,添加这个

     <key>LSUIElement</key>
     <true/>
    

    这将防止您的应用程序图标在工作时出现在 Dock 中。我很久以前就发现了这个,this 是我看到它的帖子。

    PS - 我还没有为 Chrome 应用程序测试过它。请自行承担测试风险。

    【讨论】:

    • 我用推理更新了描述。本质上,我想运行正在后台执行的任务。由于我在我正在构建的应用程序中显示任务的进度条,因此没有必要显示正在打开的 chrome 应用程序。
    • 不幸的是,在 Info.plist 中添加这些标签似乎不适用于 Chrome/运行 chromedriver。它成功没有打开应用程序图标,但没有进行后台处理。
    猜你喜欢
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多