2014-02-27 118 views
0

嗨。我想下面的代碼並運行測試用例,使得Selenium實例丟失會話數據

  • 用戶在
  • 記錄的瀏覽器被關閉
  • 瀏覽器再次啓動。

隨後,執行代碼以驗證會話是否仍然存在。

public void test() 
{ 
    IWebDriver driver = new ChromeDriver(); 
    driver.Navigate().GoToUrl("http://site/login"); 
    this.login(); 
    driver.quit(); 
    IWebDriver driver = new ChromeDriver(); 
    driver.Navigate().GoToUrl("http://site/homepage"); 
    this.CheckSessionExist(); /// reutrn false as the session is lost 

} 

我的問題是:我應該不能在我初始化另一個驅動程序實例後檢索會話?如果這不是它的工作原理,那我該如何複製這個測試用例呢?

+0

我相信開始ChromeDriver的'一個新實例()'開始「乾淨」,這意味着登錄會話你有以前與WebDriver實例相關聯,該實例現在不在了。 – Richard

+0

我可以將它傳遞給下一個實例嗎? – Amrit

回答

1

一個建議:

public void test() 
{ 
    IWebDriver driver = new ChromeDriver(); // This opens a window 
    driver.Navigate().GoToRul("https://www.google.com"); // Navigate to a dummy url, this is to keep the chrome driver session alive later 
    IWebElement body = driver.FindElement(By.CssSelector("body")); 
    body.SendKeys(Keys.CONTROL + 't'); // This opens a new window 

    String winHandleBefore = driver.CurrentWindowHandle(); 

    //Switch to new window opened 
    foreach(String winHandle in driver.WindowHandles{ 
    if(winHandle !- winHandleBefore) 
     driver.SwitchTo().Window(winHandle); 
    } 
    driver.Navigate().GoToUrl("http://site/login"); 
    this.login(); 
    driver.Close(); // This closes the current window, but should keep the ChromeDriver session alive 
    driver.SwitchTo().Window(winHandleBefore); 
    IWebElement body = driver.FindElement(By.CssSelector("body")); 
    body.SendKeys(Keys.CONTROL + 't'); // This opens a new window 
    String winHandleBefore = driver.CurrentWindowHandle(); 

    //Switch to new window opened 
    foreach(String winHandle in driver.WindowHandles{ 
    if(winHandle !- winHandleBefore) 
     driver.SwitchTo().Window(winHandle); 
    } 
    driver.Navigate().GoToUrl("http://site/homepage"); 
    this.CheckSessionExist(); /// reutrn false as the session is lost 
} 

這裏的想法是你

  • 打開一個虛擬窗口,以保持當前ChromeDriver會話有效
  • 打開,你將使用一個新窗口導航到您的登錄測試
  • 切換到新窗口,導航到網址
  • 登錄
  • 關閉該窗口
  • 切換回原來的窗口與虛擬網址
  • 再打開一個新窗口
  • 導航到主頁
  • 確保您的會議還活着

可能過於複雜,可能存在更好的解決方案。關閉瀏覽器,打開新的瀏覽器之前

+0

是的,這是我如何做,編輯的問題 – Amrit

0

提取的cookies,瀏覽到同一域和放置Cookie