Java 如何在Selenium 2.53.1中将Firefox浏览器设置为私有模式?

Java 如何在Selenium 2.53.1中将Firefox浏览器设置为私有模式?,java,selenium,firefox,Java,Selenium,Firefox,我使用的是selenium 2.53.0(我不想更新到3.0,因为我需要在Firefox上工作,selenium没有为FF实现操作) 我的问题是:我试图以私有模式打开FF(我不想保留缓存,因为我运行了很多FF实例) 为此,我使用FF配置文件,并且我有一个证书,所以我接受它 我的代码是: FirefoxDriverManager.getInstance().setup(); capabilities.setBrowserName("firefox");

我使用的是selenium 2.53.0(我不想更新到3.0,因为我需要在Firefox上工作,selenium没有为FF实现操作)

我的问题是:我试图以私有模式打开FF(我不想保留缓存,因为我运行了很多FF实例)

为此,我使用FF配置文件,并且我有一个证书,所以我接受它

我的代码是:

        FirefoxDriverManager.getInstance().setup();

        capabilities.setBrowserName("firefox");
        capabilities.setVersion("46");

        ProfilesIni profile = new ProfilesIni();
        FirefoxProfile ffProfile = profile.getProfile("default");

        ffProfile.setPreference("browser.private.browsing.autostart", true); 
        ffProfile.setPreference("browser.privatebrowsing.autostart", true);

        //accept the certificate
        ffProfile.setAcceptUntrustedCertificates(true);
        ffProfile.setAssumeUntrustedCertificateIssuer(false);
        capabilities.setCapability(FirefoxDriver.PROFILE, ffProfile);
        WebDriver webDriver = new FirefoxDriver();
我尝试了
“browser.private.browsing.autostart”
“browser.private browsing.autostart”
,因为在firefox中执行about:config时,我发现了这两个选项

我没有收到任何错误,firefox运行我的测试,但不是在私下。你知道吗?
我找到了这个,但它没有答案。

在上面的代码示例中,您正在尝试两次设置配置文件。是否尝试删除其中一个参数?只要

 ffProfile.setPreference("browser.privatebrowsing.autostart", true);
不适用于您,有一个替代解决方案;所以你可以一直工作直到你弄明白这一点

在要打开私有窗口的页面中查找任何元素。例如:

Driver.FindElement(By.ByXpath(//div[@id="loginButton"])).sendKeys(Keys.chord(Keys.CONTROL, Keys.SHIFT, "P"));
然后向其发送Ctrl+Shift+p。然后您可以使用新的专用窗口进行测试。也许不是最好的解决方案,但是,这将工作100%,刚刚在我的机器上测试,请在下面的评论,如果你有困难得到这个权利


祝你好运

在上面的代码示例中,您尝试两次设置配置文件。是否尝试删除其中一个参数?只要

 ffProfile.setPreference("browser.privatebrowsing.autostart", true);
FirefoxOptions opts = new FirefoxOptions();
opts.addArguments("-private");
FirefoxDrive f = new FirefoxDriver(opts);
不适用于您,有一个替代解决方案;所以你可以一直工作直到你弄明白这一点

在要打开私有窗口的页面中查找任何元素。例如:

Driver.FindElement(By.ByXpath(//div[@id="loginButton"])).sendKeys(Keys.chord(Keys.CONTROL, Keys.SHIFT, "P"));
然后向其发送Ctrl+Shift+p。然后您可以使用新的专用窗口进行测试。也许不是最好的解决方案,但是,这将工作100%,刚刚在我的机器上测试,请在下面的评论,如果你有困难得到这个权利

祝你好运

FirefoxOptions opts = new FirefoxOptions();
opts.addArguments("-private");
FirefoxDrive f = new FirefoxDriver(opts);
目前正在使用FF v54和selenium 3.4.0


目前正在使用FF v54和selenium 3.4.0

它正在“工作”,通过打印有关隐私的信息,它完全停止了我的测试:),但是的,我的页面处于私人模式。你知道为什么我的偏好不起作用吗?我需要更改解决方案的代码。它可能会停止测试,因为您需要获取WindowHandles(),然后切换到新打开的窗口。同时,我会玩一个游戏,看看是否可以从首选项为您启动Firefox。当我在Firefox中键入about:config时,我可以看到布尔变量browser.privatebrowsing被设置为true(但Firefox仍然在正常的非私有窗口中打开)。但根据下面的官方链接(总是使用私人浏览),当firefox启动时,你不会看到紫色的丝带。但本质上,因为它不记得历史,它是在私人模式。还有一个链接。当我键入about:config时,我看不到布尔变量browser.privatebrowsing设置为true,它总是设置为false。所以,如果它是真的(不是紫色的),那就可以了?因为当我使用你的变通方法时,它是紫色的。谢谢你的帮助!我的是用户设置和真实的;然而,尽管仍然没有紫色的私有窗口,但它“工作”,它绝对停止了我的测试:)通过打印有关隐私的信息,但是的,我的页面处于私有模式。你知道为什么我的偏好不起作用吗?我需要更改解决方案的代码。它可能会停止测试,因为您需要获取WindowHandles(),然后切换到新打开的窗口。同时,我会玩一个游戏,看看是否可以从首选项为您启动Firefox。当我在Firefox中键入about:config时,我可以看到布尔变量browser.privatebrowsing被设置为true(但Firefox仍然在正常的非私有窗口中打开)。但根据下面的官方链接(总是使用私人浏览),当firefox启动时,你不会看到紫色的丝带。但本质上,因为它不记得历史,它是在私人模式。还有一个链接。当我键入about:config时,我看不到布尔变量browser.privatebrowsing设置为true,它总是设置为false。所以,如果它是真的(不是紫色的),那就可以了?因为当我使用你的变通方法时,它是紫色的。谢谢你的帮助!我的是用户设置和真实的;然而尽管如此,仍然没有紫色的私人窗户