在做web测试过程中,通常需要先登录被测系统,有的网站登录需要验证码,这无疑增加了测试时间成本,怎么才能实现免登陆?今天我为大家介绍两种方法
一、通过selenium的Cookie类的相关操作,保存和加载浏览器的cookie,实现免登陆
通过查看selenium的api或源码,可以发现cookie类有以下字段,并有相应的set, get方法和多个重载的构造方法:
1.保存登录后的浏览器cookie,代码如下:
以登录M京东为例,可以通过输入账号和密码来登录,这里通过社交账号联合登录,登录成功后记录cookie到本地文件
@DataProvider(name="getQQ")
public Object[][] getQQ() {
return new Object[][] {
// {"979320969"},
{"3454608466"},
};
}
@Test(dataProvider="getQQ")
public void saveCookie_mjd(String qq) throws IOException {
driver.get("https://plogin.m.jd.com/user/login.action?appid=100");
driver.findElement(By.linkText("QQ")).click();
try {
driver.switchTo().frame("ptlogin_iframe");
} catch (NoSuchFrameException e) {
driver.findElement(By.className("ch_uin")).click(); //切换其他账号
driver.switchTo().alert().accept();
driver.switchTo().frame("ptlogin_iframe");
}
driver.findElement(By.id("nick_"+qq)).click();
driver.switchTo().defaultContent();
Assert.assertTrue(driver.getCurrentUrl().contains("https://m.jd.com"));
Set<Cookie> set = driver.manage().getCookies();
File cookieFile = new File("./cookies"+qq+".txt");
if (cookieFile.exists()) {
cookieFile.delete();