2017-07-27 72 views
0

當我創建Firefox Web驅動程序的實例時,它會成功打開Firefox。但是,它會打開兩個選項卡(一個「常規」Firefox選項卡和一個IE選項卡; IE選項卡處於活動狀態並在測試期間保持活動狀態,除非我手動切換到測試實際正在執行的選項卡)。在Firefox中運行Selenium測試會創建兩個選項卡並在「非活動」選項卡中運行

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。

+2

使用'firefoxDriver.Quit();'代替'firefoxDriver.Close();'來終止瀏覽器。 –

+0

@FlorentB。由於一些奇怪的原因,我不明白,'firefoxDriver.Quit()'似乎沒有任何作用。它不會拋出任何異常或類似的東西。調用'firefoxDriver.Close()'兩次,但它似乎是一個愚蠢的黑客掩蓋了實際的問題。 – EJoshuaS

回答

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); 

只需使用about:config中在Firefox的URL,它會提供的設置。

+0

作爲所述的driver.quit結束硒會話,所以所有的標籤/瀏覽器關閉。 driver.close只關閉活動標籤頁/瀏覽器。 –

+0

我應該在哪裏再次放置'about:config'? – EJoshuaS

+0

只需輸入firefox的URL字段並回車即可獲取所有設置細節。僅供參考。不要在代碼中使用。 –

相關問題