运行 Firefox 中的 Selenium 测试创建两个选项卡并在 "non-active" 选项卡中运行

Running a Selenium test in Firefox creates two tabs and runs the in the "non-active" tab

当我创建 Firefox Web 驱动程序实例时,它成功打开了 Firefox。但是,它用两个选项卡打开它(一个 "regular" Firefox 选项卡和一个 IE 选项卡;IE 选项卡处于活动状态并在测试期间保持活动状态,除非我手动切换到测试实际执行的选项卡).

它将 运行 在 Firefox 选项卡(即非活动选项卡)中进行测试。

我正在像这样实例化我的 Firefox Web 驱动程序:

var firefoxOptions = new FirefoxOptions()
{
    Profile = new FirefoxProfile(),
    UseLegacyImplementation = false,
    BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"
};

firefoxDriver = new FirefoxDriver(firefoxOptions);

firefoxDriver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 0, 10);

我也会包含单元测试的代码,但是问题出现在我 运行 进行任何测试之前的初始化过程中。

此外,当我像这样进行清理时:

[TestCleanup]
public void Cleanup()
{
    if (firefoxDriver != null)
    {
        firefoxDriver.Close();
        firefoxDriver.Dispose();
    }
}

它关闭测试 运行 所在的选项卡(Firefox 选项卡)。但是,它 关闭该选项卡 - IE 选项卡和浏览器都保持打开状态。

This question 似乎有些相关,但行为有些不同,因为 Selenium 并未尝试在两个选项卡中实际执行测试 - 它只使用一个选项卡。另外,那里的 OP 使用的是 Firefox 20.0,而我使用的是 Firefox 52.2.0。

很简单,我们可以创建配置文件并使用它。我在这里回答

另一种方式,我们可以像

一样以编程方式创建配置文件
FirefoxProfile profile= new FirefoxProfile();
profile.setPreference(“browser.startup.homepage”,”https://...");
WebDriver driver = new FirefoxDriver(profile);

只需在 firefox URL 中使用 about:config,它会提供设置。