如何隐藏 Chrome Web 驱动程序图标 (Python-Selenium)
How To Hide Chrome Web Driver Icon (Python-Selenium)
根据推理更新
目标: 运行 chrome Web 驱动程序在后台运行 不在 Dock 或应用程序栏中显示应用程序图标.仅供参考:我已经可以 运行 chrome 无头,但我无法隐藏或不显示我的应用程序栏中的 chrome 图标。
原因: 我正在构建一个并行访问各种网站的应用程序,我不希望 chrome 应用程序图标显示正在执行的同步任务地方。我想运行在后台执行这些任务。
带有 chrome 选项的当前代码将显示 headless 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)
如何隐藏 chrome 驱动程序图标不显示?除了设置 'headless' chrome 选项之外,我还可以设置 chrome 选项吗? 这是否更像是需要进行的 OS 设置运行 chrome后台驱动?我能够在无头模式下成功地 运行 多个 chrome 驱动程序,但是最好不要在停靠栏或应用程序托盘中显示 chrome 图标,类似于 phantomjs 不启动应用程序的方式图标。
^在上图中,那些 chrome 驱动程序 运行 以无头模式显示在我的扩展坞中,非常适合我的程序,我什至不想显示这些图标,因为它是全部后台处理。
使用 Selenium
无法做到这一点。我真的不明白你为什么要这样做。是否有真正的目的,或者只是你不想让它显示出来?即使 Chrome 应用程序显示在 dock 上,在无头模式下,它也能很好地工作。
但是,如果您希望图标在打开时不出现在 Dock 中,则需要通过修改该应用程序的 Info.plist
文件来禁用它。
在 Chrome 的 Info.plist
中,添加这个
<key>LSUIElement</key>
<true/>
这将阻止您的应用程序图标在工作时出现在停靠栏中。我很久以前就发现了这个,this 是我看到它的 post。
PS - 我还没有针对 Chrome 应用测试它。请自行承担风险。
更新(这对我来说至少在 Mac 上隐藏了 chrome 驱动程序图标):
我找不到 Chrome Option
来隐藏停靠栏中出现的 chromedriver
图标。但是,我能够编辑 Chrome 的 Info.plist 文件作为我程序的一部分,使用 LSBackgroundOnly
键来完成技巧(隐藏 chrome 驱动程序图标)。
在 Chrome 的 Info.plist 中,我以编程方式输入:
<key>LSBackgroundOnly</key>
<string>1</string>
在我的 Mac 使用 python3 代码 我使用 os.system
执行终端命令 使用 defaults
在程序执行时输入 LSBackgroundOnly key
然后在程序执行结束时,我从 Info.plist.
中删除 LSBackgroundOnly key
像这样:
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: 这很棘手,因为如果您在程序期间没有正确 add/delete LSBackgroundOnly,您的普通 chrome 应用程序可能会以后台模式启动执行。根据我的经验,最坏的情况是您可能需要从 Info.plist 文件中手动删除 LSBackgroundOnly,然后重新启动计算机以使 Chrome 退出后台模式。
我在程序执行后从 Info.plist 文件中删除了 LSBackgroundOnly 键,因为只有在启动 chrome 驱动程序时,该键才需要在文件中。之后,我希望能够使用常规 Chrome 应用程序,而不会在后台模式下打开它。但是,如果您了解您的程序执行并处理您的异常,这肯定会正确隐藏图标并且使用您的常规 Chrome 应用程序不会有任何不同。
祝黑客愉快。
根据推理更新
目标: 运行 chrome Web 驱动程序在后台运行 不在 Dock 或应用程序栏中显示应用程序图标.仅供参考:我已经可以 运行 chrome 无头,但我无法隐藏或不显示我的应用程序栏中的 chrome 图标。
原因: 我正在构建一个并行访问各种网站的应用程序,我不希望 chrome 应用程序图标显示正在执行的同步任务地方。我想运行在后台执行这些任务。
带有 chrome 选项的当前代码将显示 headless 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)
如何隐藏 chrome 驱动程序图标不显示?除了设置 'headless' chrome 选项之外,我还可以设置 chrome 选项吗? 这是否更像是需要进行的 OS 设置运行 chrome后台驱动?我能够在无头模式下成功地 运行 多个 chrome 驱动程序,但是最好不要在停靠栏或应用程序托盘中显示 chrome 图标,类似于 phantomjs 不启动应用程序的方式图标。
^在上图中,那些 chrome 驱动程序 运行 以无头模式显示在我的扩展坞中,非常适合我的程序,我什至不想显示这些图标,因为它是全部后台处理。
使用 Selenium
无法做到这一点。我真的不明白你为什么要这样做。是否有真正的目的,或者只是你不想让它显示出来?即使 Chrome 应用程序显示在 dock 上,在无头模式下,它也能很好地工作。
但是,如果您希望图标在打开时不出现在 Dock 中,则需要通过修改该应用程序的 Info.plist
文件来禁用它。
在 Chrome 的 Info.plist
中,添加这个
<key>LSUIElement</key>
<true/>
这将阻止您的应用程序图标在工作时出现在停靠栏中。我很久以前就发现了这个,this 是我看到它的 post。
PS - 我还没有针对 Chrome 应用测试它。请自行承担风险。
更新(这对我来说至少在 Mac 上隐藏了 chrome 驱动程序图标):
我找不到 Chrome Option
来隐藏停靠栏中出现的 chromedriver
图标。但是,我能够编辑 Chrome 的 Info.plist 文件作为我程序的一部分,使用 LSBackgroundOnly
键来完成技巧(隐藏 chrome 驱动程序图标)。
在 Chrome 的 Info.plist 中,我以编程方式输入:
<key>LSBackgroundOnly</key>
<string>1</string>
在我的 Mac 使用 python3 代码 我使用 os.system
执行终端命令 使用 defaults
在程序执行时输入 LSBackgroundOnly key
然后在程序执行结束时,我从 Info.plist.
LSBackgroundOnly key
像这样:
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: 这很棘手,因为如果您在程序期间没有正确 add/delete LSBackgroundOnly,您的普通 chrome 应用程序可能会以后台模式启动执行。根据我的经验,最坏的情况是您可能需要从 Info.plist 文件中手动删除 LSBackgroundOnly,然后重新启动计算机以使 Chrome 退出后台模式。
我在程序执行后从 Info.plist 文件中删除了 LSBackgroundOnly 键,因为只有在启动 chrome 驱动程序时,该键才需要在文件中。之后,我希望能够使用常规 Chrome 应用程序,而不会在后台模式下打开它。但是,如果您了解您的程序执行并处理您的异常,这肯定会正确隐藏图标并且使用您的常规 Chrome 应用程序不会有任何不同。
祝黑客愉快。