创建Firefox配置文件并关闭牵线木偶

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建Firefox配置文件并关闭牵线木偶相关的知识,希望对你有一定的参考价值。

我来自Ruby背景,我知道如何在Ruby Selenium Binding中做到这一点,但我不知道怎么做Java Selenium Binding,

我有这个代码来创建Firefox配置文件

 FirefoxProfile firefoxProfile = new FirefoxProfile(pathToProfile);
 WebDriver driver=new FirefoxDriver(firefoxProfile);

它适用于selenium 2.53但它在最近的selenium绑定3.11.0中引发了错误,有人能告诉我什么是替代方案吗?

而且我还想关掉牵线木偶以连接到Legacy Firefox驱动程序,我可以使用以下代码执行此操作

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", false);
WebDriver driver=new FirefoxDriver(capabilities);

但是,如果我使用上面的行,那么它就会弃用FirefoxDriver。任何人都可以指导我如何创建配置文件以及如何关闭牵线木偶?

答案

是的FirefoxDriver(desiredCapabilities)已被弃用。

替代方式是选择:

FirefoxOptions foptions =  new FirefoxOptions(capabilities);
WebDriver driver=new FirefoxDriver(foptions);  

更新:[按顺序]

FirefoxOptions foptions =  new FirefoxOptions();
FirefoxProfile firefoxProfile = new FirefoxProfile(pathToProfile);
foptions.setProfile(firefoxProfile);
foptions.setCapability("marionette", false);
foptions.setBinary("C:\Program Files\Mozilla Firefox 52\firefox.exe"); 
WebDriver driver = new FirefoxDriver(foptions);
另一答案

要首先使用现有的Firefox配置文件进行测试执行,您必须按照Creating a new Firefox profile on Windows上的说明手动创建Firefox配置文件。现在,您必须将Firefox配置文件传递给FirefoxOptions类对象。此外,您将使用Legacy Firefox浏览器,您必须通过false类对象将marionatte设置为DesiredCapabilities,您需要将merge()放入FirefoxOptions类对象,如下所示:

System.setProperty("webdriver.gecko.driver", "C:\Utility\BrowserDrivers\geckodriver.exe");
ProfilesIni profile = new ProfilesIni();
FirefoxProfile testprofile = profile.getProfile("debanjan");
FirefoxOptions options = new FirefoxOptions();
options.setProfile(testprofile);
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("marionatte", false);
options.merge(dc);
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.com");

更新

我不确定您的用例以及您希望使用Legacy Firefox Driver的原因。但根据GitHub的讨论,Unable to Start Firefox Using the Legacy Driver on a 3.5.3 Grid @jimevans明确提到:

旧版Firefox驱动程序不适用于Firefox 53左右。您可能会启动浏览器,但语言绑定将完全无法与驱动程序通信(因为Firefox将拒绝加载作为旧版Firefox驱动程序的浏览器扩展)。

@barancev还提到:

在“功能”块中,绑定不应通过符合W3C标准的有效负载部分的OSS功能。它们仅允许在“desiredCapabilities”块中。也许,Mozilla在发布频道中打破了Firefox 48中的Selenium兼容性,但在esr频道的第52版中恢复了它。这是出乎意料的,但这是真的。

这取决于你做出明智的决定。

以上是关于创建Firefox配置文件并关闭牵线木偶的主要内容,如果未能解决你的问题,请参考以下文章

UnhandledPromiseRejectionWarning:错误:协议错误(Runtime.callFunctionOn):目标已关闭。 (木偶师)

启动火狐浏览器,提示配置文件已丢失。关闭重启浏览器不行,重启电脑不行,重新安装也不行。mac系统。

任何更改后的 Android Firebase 数据库活动/片段正在关闭

设计的token_authenticatable安全吗?

Python:Selenium Firefox Webdriver 失败并出现错误:“无法加载配置文件...WARN addons.xpi...”

Python 2.7 + Selenium 3.8 + Firefox 57 + MacOS Sierra:设置“browser.helperApps.neverAsk.openFile”后仍然出现下