在Selenium中,如何使用现有cookie打开Firefox浏览器

时间:2015-04-05 08:15:45

标签: cookies selenium-webdriver

我正在尝试创建一个具有以下步骤的硒测试:

  1. 登录google页面。
  2. 输入有效凭据成功登录
  3. 页面将在此处显示收件箱
  4. 点击右上角关闭浏览器"关闭"浏览器上的按钮。
  5. 重复步骤1
  6. 在这个测试案例中,我希望在第5步之后google页面不会再次请求凭据并直接转到收件箱页面。怎么用selenium webdriver做到这一点?

3 个答案:

答案 0 :(得分:3)

这应该可以满足您的需求。使用driver.manage()将cookie从第一个驱动程序实例复制到新的驱动程序实例中.getCookies();

FirefoxDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://mail.google.com/");
//Passing valid credentials
driver.findElement(By.xpath("//*[@id='Email']")).sendKeys("testuser@gmail.com");
driver.findElement(By.xpath("//*[@id='Passwd']")).sendKeys("password");
driver.findElement(By.xpath("//*[@id='signIn']")).click();
Thread.sleep(20000);
Set<Cookie> cookies = driver.manage().getCookies();
driver.close();
//Starting new browser 
driver = new FirefoxDriver();
for(Cookie cookie : cookies)
{
    driver.manage().addCookie(cookie);
}
driver.manage().window().maximize();
driver.get("https://mail.google.com/");
Thread.sleep(20000);
driver.quit();

答案 1 :(得分:0)

为什么要点击&#34;关闭&#34;关闭Selenium会话?浏览器按钮?它真的不是一种如何运作的方式。每个selenbium框架都有自己的会话结束实现,发明新东西不是必需的。

为了您的目的,您有很多方法可以做

1)登录后将cookie保存在某个全局变量/对象中,并在下次会话开始时添加它们

2)实现contsctructor方法(取决于你的语言和框架,当你有一个登录应用程序的逻辑时,它可能类似于php中的setUp()或javascript中的beforeEach())。

为什么会这样?当您关闭浏览器时,Selenium会在没有任何可用内容的情况下进行全新会话,这是为了#34; clear&#34;测试结果。

答案 2 :(得分:0)

我是硒的新人。可能是我的步骤可能不正确。如果我错了,请纠正我。

此测试用例背后的目标是,如果用户关闭用户成功登录的网站,然后关闭浏览器。现在,当为同一站点午餐时,登录页面不应显示并重定向到收件箱页面。

以下是示例代码:

FirefoxDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://mail.google.com/");
//Passing valid credentials
driver.findElement(By.xpath("//*[@id='Email']")).sendKeys("testuser@gmail.com");
driver.findElement(By.xpath("//*[@id='Passwd']")).sendKeys("password");
driver.findElement(By.xpath("//*[@id='signIn']")).click();
Thread.sleep(20000);
driver.close();
//Starting new browser 
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://mail.google.com/");
Thread.sleep(20000);
driver.quit();