2

更新推理

目标:在后台运行 chrome Web 驱动程序,而不在 Dock 或应用程序栏中显示应用程序图标。仅供参考:我已经可以无头运行 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 failed to start in background (without a start-up window)

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

在此处输入图像描述

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

4

2 回答 2

2

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

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

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

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

在我的 Mac 上使用 python3 代码os.system执行终端命令,defaults用于输入LSBackgroundOnly key程序执行时间,然后在程序执行结束时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 应用程序没有什么不同。

快乐的黑客。

于 2017-08-03T09:16:19.497 回答
0

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

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

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

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

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

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

于 2017-07-21T16:45:06.730 回答