2014-02-27 166 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