2013-03-25 107 views
3

Webdriver Wire Protocol不包含從所有域中刪除所有Cookie的方法。 It can only delete cookies from current domain如何從所有域中刪除所有Cookie?

我想刪除所有域中的所有cookie,因爲AUT已經與第三方站點集成了cookie,我想在每個測試開始時確保清理狀態,以提高易維護性。

所以我開始考慮驅動程序特定的方式來刪除所有的cookies。我特別感興趣的是Firefox。

在Firefox瀏覽器可以通過做:

  • 按Ctrl + + 刪除然後輸入
  • 寫Firefox擴展,將允許這樣做在一個步驟

我想念什麼嗎?是否有跨驅動程序選項可以刪除所有Cookie(來自所有域)?

+0

類似的問題:[Selenium2:刪除所有Cookie,即使是與當前域無關的Cookie](http://stackoverflow.com/q/7039003/841064) – 2013-03-25 18:38:37

+0

目前,我通過訪問另一個要刪除的域來執行解決方法之前由其設置的cookie – 2013-03-30 12:09:44

回答

-4

有幾種方法可以做到這一點。這是我通常在我的框架中實現這些工作的方式。

當創建一個新的驅動程序對象(在這種情況下ChromerDriver)設置ENSURING_CLEAN_SESSION能力:

public WebDriver driver() { 

    File driverServer = new File(WebDriverConfig.class.getClassLoader().getResource("webDrivers/chromedriver.exe").getFile()); 
    System.setProperty("webdriver.chrome.driver", driverServer.getAbsolutePath()); 
    DesiredCapabilities caps = DesiredCapabilities.chrome(); 
    caps.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true); 
    return new ChromeDriver(); 

} 

然後在我的每一個試驗開始使用TestNG的框架:

@BeforeMethod(alwaysRun = true) 
public void setup() { 

    driver.manage().deleteAllCookies(); 
    // Do other stuff before each test executes 

} 

你可以也通過獲取cookie並找到您想要的然後刪除那個cookie來刪除特定的cookie。

driver.manage().getCookies();

我希望這可以幫助你找到解決您的問題。

+2

'driver.manage()。deleteAllCookies();'僅從當前域中刪除cookie(對當前頁面可見)。 'getCookies'只返回當前域的cookie。這就是爲什麼我提出問題並在那裏重複「來自所有領域」3次 – 2013-03-26 22:54:30

相關問題