Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行测试时在OSX Dock中禁用Firefox图标_Python_Macos_Firefox_Selenium - Fatal编程技术网

Python 运行测试时在OSX Dock中禁用Firefox图标

Python 运行测试时在OSX Dock中禁用Firefox图标,python,macos,firefox,selenium,Python,Macos,Firefox,Selenium,目前在OSX上,Selenium驱动程序启动在OSX上打开一个新的Firefox图标。此外,当前应用程序会失去焦点,从而中断您的键入等操作 有没有可能让Selenium在OSX上启动Firefox,使其不会在Dock中聚焦或引起额外的动作?您可以轻松修改Firefox,使其不会出现在Dock中 在Finder中,右键单击Firefox应用程序图标并选择“显示软件包内容”。然后打开目录文件夹,使用属性列表编辑器(XCode附带)或BBEdit/TextWrangler编辑Info.plist。在文

目前在OSX上,Selenium驱动程序启动在OSX上打开一个新的Firefox图标。此外,当前应用程序会失去焦点,从而中断您的键入等操作


有没有可能让Selenium在OSX上启动Firefox,使其不会在Dock中聚焦或引起额外的动作?

您可以轻松修改Firefox,使其不会出现在Dock中

在Finder中,右键单击Firefox应用程序图标并选择“显示软件包内容”。然后打开目录文件夹,使用属性列表编辑器(XCode附带)或BBEdit/TextWrangler编辑
Info.plist
。在文件开头添加一个值为
的键
LSUIElement
。在BBEdit/TextWrangler中,文件的开头如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>LSUIElement</key>
    <true/>
然后你可以在任何你喜欢的文本编辑器中编辑它。之后你甚至不需要将它转换回二进制;文本格式实际上可以很好地工作

无论如何,保存info.plist文件,关闭并重新启动Firefox。图标(和菜单栏)现在将消失。(不,不可能只显示菜单栏而隐藏图标,但我认为这不会影响Selenium。)

关于你的第二个问题:从技术上讲,启动一个应用程序而不关注它是可能的。例如,此Applescript启动Firefox并获取窗口列表,但不会发送将其带到前台的
activate
消息

tell application "Firefox" to get windows
你可以发送任何信息;
get windows
部分只是为了我们的目的而不做任何事情。关键是,你必须向Firefox发送一些消息才能启动它(AppleScript知道你不能向没有运行的应用发送消息,所以它会在后台为你启动)

现在我不确定Selenium是如何启动浏览器的,但是可以使用
osascript
命令行工具或类似的工具修改它来启动Firefox,并使用上面的命令

osascript -e 'tell application "Firefox" to get windows'

我将让您将这些部分放在一起……

您可以轻松修改Firefox,使其不会出现在dock中

在Finder中,右键单击Firefox应用程序图标并选择“显示软件包内容”。然后打开目录文件夹,使用属性列表编辑器(XCode附带)或BBEdit/TextWrangler编辑
Info.plist
。在文件开头添加一个值为
的键
LSUIElement
。在BBEdit/TextWrangler中,文件的开头如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>LSUIElement</key>
    <true/>
然后你可以在任何你喜欢的文本编辑器中编辑它。之后你甚至不需要将它转换回二进制;文本格式实际上可以很好地工作

无论如何,保存info.plist文件,关闭并重新启动Firefox。图标(和菜单栏)现在将消失。(不,不可能只显示菜单栏而隐藏图标,但我认为这不会影响Selenium。)

关于你的第二个问题:从技术上讲,启动一个应用程序而不关注它是可能的。例如,此Applescript启动Firefox并获取窗口列表,但不会发送将其带到前台的
activate
消息

tell application "Firefox" to get windows
你可以发送任何信息;
get windows
部分只是为了我们的目的而不做任何事情。关键是,你必须向Firefox发送一些消息才能启动它(AppleScript知道你不能向没有运行的应用发送消息,所以它会在后台为你启动)

现在我不确定Selenium是如何启动浏览器的,但是可以使用
osascript
命令行工具或类似的工具修改它来启动Firefox,并使用上面的命令

osascript -e 'tell application "Firefox" to get windows'

我将让您把这些部分放在一起……

问题是因为Firefox在没有焦点时并不总是正确地触发事件。这将很快被修复,因为它现在是HTML5规范的一部分


我建议只在virtualbox或VMWare Fusion中使用一个非常轻量级的VM,并且只使用远程WebDriver。

问题在于Firefox在没有焦点时并不总是正确地触发事件。这将很快被修复,因为它现在是HTML5规范的一部分


我建议在virtualbox或VMWare Fusion中使用一个非常轻量级的VM,并且只使用远程WebDriver。

感谢您提供的大量信息!我仍然使用Firefox作为我的主浏览器,所以我不想直接修改它。Firefox也会更新,等等。还有一个正在运行的Firefox实例与Selenium实例不同,尽管它们使用相同的二进制文件。那么,只需复制一份Firefox即可。感谢您提供的大量信息!我仍然使用Firefox作为我的主浏览器,所以我不想直接修改它。Firefox也会更新,等等。还有一个正在运行的Firefox实例与Selenium实例不同,尽管它们使用相同的二进制文件。