2012-07-29 30 views
4

自从更新到Firefox 12以来,每次我用Selenium(在python和Mac OS 10.7中)以特定的配置文件启动Firefox时,它会弹出“检查插件的兼容性”对话框,有时这个对话框会永远保持不变,我必须强制退出它。强制退出后,Firefox的新实例将继续启动并成功完成Selenium脚本的其余部分。如何在Selenium中禁止Firefox中的“检查插件的兼容性”对话框?

我试过将extensions.checkCompatibility设置为false。这固定它,如果我正常启动Firefox,但不是如果我用Selenium启动它。任何想法如何抑制这个对话框?谢谢!

+0

可能,下载最新版本的Firefox火狐13是镇上:) – iMatoria 2012-07-29 17:50:42

回答

5

每当Firefox更新时,此对话框只显示一次。每次为您显示的原因可能是Selenium每次都会创建一个新配置文件。如果您将extensions.lastAppVersion优先级设置为"12.0"(或任何当前的Firefox版本),那么Firefox将不会再认为它已更新并且不会显示此对话框。但是,添加extensions.showMismatchUI首选项并将其设置为false应该会更容易,这会抑制此对话框(但不包括其他升级操作)。

附注extensions.checkCompatibility首选项不再以Firefox 3.6开头,它是当前Firefox版本中特定于版本的首选项。因此,您必须设置extensions.checkCompatibility.12.0偏好。这完全禁用扩展的兼容性检查,而不仅仅是您关心的对话框。

+0

谢谢!这个工作得很好! – Worker 2015-09-14 15:01:30

0

这样做是为了移除“检查插件的兼容性”对话框。这是基于Windows操作系统的。

创建一个临时的FF配置文件并使用该配置文件启动服务器,如下所示。

java -jar selenium-server-x.x.x.jar -firefoxProfileTemplate "/path/to/the/temp/profile" 

现在使用下面的代码。

import com.thoughtworks.selenium.*; 
public class Test { 

public static void main(String ar[]) { 

Selenium sel = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com/"); 

sel.start(); 
} 
} 

现在在运行命令中键入“%temp%”,你可以看到有同名的硒会议的文件夹。复制文件夹内容并将其替换为您的临时文件内容。

按照以下步骤删除插件兼容性。
1。创建一个新的FF配置文件
2。根据所需设置设置FF配置文件
3。只需运行一个硒样例程序,它就可以调用firefox。
4。现在您可以在您的sytsem中的某处找到与Selenium Session具有相同名称的文件夹。 (很可能在保存临时内容的目录中)
5。复制文件夹内容并将其替换为新创建的配置文件。

现在您可以根据需要使用新创建的配置文件。每当FF更新时,通过一次调用带有配置文件的firefox,总是检查现有插件是否与现有版本兼容。

1

我已经尝试设置extensions.checkCompatibility为false。这固定它,如果我正常启动Firefox,但不是如果我用Selenium启动它。

当您使用Selenium启动它时,Firefox驱动程序将不会在临时文件目录中创建临时配置文件,从而减慢测试速度并占用不必要的空间。

为您的测试目的创建一个配置文件,并设置您的需要。充分说明创建SeleniumProfile可以在https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

在Java中可以找到,我有以下:

protected WebDriver createFirefoxDriver() {  
    File proFile = new File("C:\\Users\\<username>\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xxxxxx42.SeleniumProfile"); 
    FirefoxProfile ffProfile = new FirefoxProfile(proFile); 
    WebDriver ffDriver = new FirefoxDriver(ffProfile); 

    return ffDriver; 
}