在Firefox中运行Selenium测试会创建两个选项卡并在“非活动”选项卡中运行

时间:2017-07-27 16:12:32

标签: c# selenium selenium-webdriver selenium-firefoxdriver

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

enter image description here

它将在Firefox标签中运行测试(即非活动标签)。

我正在实例化我的Firefox网络驱动程序:

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。

1 个答案:

答案 0 :(得分:1)

简单地说,我们可以创建个人资料并使用它。我在这里回答Firefox 44.0.1 opening two tabs , when running selenium webdriver code

另一方面,我们可以像语法一样创建配置文件

FirefoxProfile profile= new FirefoxProfile();
profile.setPreference(“browser.startup.homepage”,”https://...");
WebDriver driver = new FirefoxDriver(profile);

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