Java 如何在 Selenium 中同时使用 Firefox 配置文件和 Firefox 选项

How to use both the Firefox Profile and Firefox options with Selenium in Java

我正在编写一个我想要无头的测试,它还会使用 Selenium 在 java 中下载一个文件。从 here 我了解到您可以在初始化驱动程序之前通过抛出以下代码将驱动程序设置为无头:

options.setHeadless(true); //sets driver to work headless 
WebDriver driver = new FirefoxDriver(options);

并且我可以使用此 method 编写一个 Firefox 配置文件,它将指定一个下载目录并允许我使用 firefox w/o 任何弹出 windows 下载文件(我已经修改了方法以允许该方法允许下载位置作为参数)。创建方法后,我在 main 中这样调用它:

downloadPath = "C:\Scripts"
WebDriver driver = new FirefoxDriver(FirefoxDriverProfile(downloadPath));

然后说我想将以下代码与上述两种方法之一一起使用:

driver.get(https://github.com/mozilla/geckodriver/releases);
driver.findElement(By.linkText("geckodriver-v0.27.0-win64.zip")).click();

我要么没有 headless 版本的 firefox 运行,要么在我去下载 zip 文件时弹出保存提示。

如何将配置文件和选项这两个功能结合起来?

编辑:将 setHeadless(false) 修复为 setHedless(true)

函数 options.setHeadless(false) 应该有一个 true 参数而不是 false

要使用新的 FirefoxOptions,您可以使用以下代码块:

System.setProperty("webdriver.gecko.driver", "C:\path\to\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions();
options.setProfile(new FirefoxProfile());
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.com");

要使用现有的 FirefoxOptions,您可以使用以下代码块:

System.setProperty("webdriver.gecko.driver", "C:\path\to\geckodriver.exe");
ProfilesIni profile = new ProfilesIni();
FirefoxProfile testprofile = profile.getProfile("debanjan");
FirefoxOptions opt = new FirefoxOptions();
opt.setProfile(testprofile);
WebDriver driver =  new FirefoxDriver(opt);
driver.get("https://www.google.com");

要使用新的 Firefox Profile through FirefoxOptions along with ,您可以使用以下代码块:

String downloadFilepath = "C:\path\to\MozillaFirefoxDownload";
System.setProperty("webdriver.gecko.driver", "C:\path\to\geckodriver.exe");
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir",downloadFilepath);
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true);
options.setProfile(profile);
WebDriver driver =  new FirefoxDriver(options);
driver.get("https://www.google.com");

参考资料

您可以在以下位置找到一些相关的详细讨论: