执行接口测试或者某些自动化测试时,为了避免每次访问接口都需要登录操作,可以用访问接口时,把cookies信息传过去。

思路是先登录一次页面,获取到cookies信息,把cookies信息保存到本地文件,以后再访问页面时直接拿本地的cookies文件传过去

package com.gmsd;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import java.util.StringTokenizer; import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; /**
* @author QiaoJiaofei
* @version 创建时间:2015年7月2日 上午10:29:54
* 类说明
*/
public class TestCookie { WebDriver dr = null; public static void main(String args[]) { TestCookie t = new TestCookie();
t.wtriteC();
t.getC();
}
public void wtriteC() {
System.setProperty("webdriver.chrome.driver", "D:/BaiduYunDownload/selenium/chromedriver.exe");
dr = new ChromeDriver();
dr.get("http://172.16.30.209:5555/login.shtml"); dr.findElement(By.id("inputEmail")).sendKeys("18600363820");
dr.findElement(By.id("inputPassword")).sendKeys("123456");
dr.findElement(By.id("denglu")).click();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); File file = new File("D:/JavaTestFile/TestCookies.txt"); Set<Cookie> s = dr.manage().getCookies(); if(file.exists()) {
file.delete();
try {
file.createNewFile(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
for(Cookie c:s) {
bw.write(c.getDomain()+";"+c.getName()+";"+c.getValue()+";"+c.getPath()+";"+c.getExpiry()+";"+c.isSecure());
bw.newLine();
}
bw.flush();
bw.close();
fw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dr.quit();
}
public void getC() {
System.setProperty("webdriver.chrome.driver", "D:/BaiduYunDownload/selenium/chromedriver.exe");
dr = new ChromeDriver();
dr.get("http://172.16.30.209:5555");
File file = new File("D:/JavaTestFile/TestCookies.txt");
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = null;
while((line=br.readLine())!=null) { String [] sz = line.split(";");
String doman = sz[0].trim();
String name = sz[1].trim();
String value = sz[2].trim();
String path = sz[3].trim();
Date date = null; if(!(sz[4].equals("null"))){
date = new Date(sz[4]);
//System.out.println("date="+date); }
Boolean bl = Boolean.valueOf(sz[5]); Cookie ck = new Cookie(name,value,doman,path,date,bl);
dr.manage().addCookie(ck);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} dr.get("http://172.16.30.209:5555");
//dr.quit();
}
}

  

writerC()方法是获取cookies并存到本地文件,主要使用selenium的Set<Cookie> s = dr.manage().getCookies();
getC()方法是从本地文件读取cookies信息,主要使用

Cookie ck = new Cookie(name,value,doman,path,date,bl);
dr.manage().addCookie(ck);

注意几点:

1、Cookie的构造方法的参数是有顺序的

2、getC()调用了两次url,第一次是往url传cookies,第二次是为了刷新,也可使用dr.navigate().refresh();

selenium如何操作cookies实现免登录的更多相关文章

  1. [py][mx]django的cookie和session操作-7天免登录

    浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...

  2. selenium操作cookies实现免密登录,自动发微博

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...

  3. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  4. Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架

    一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  5. Selenium中使用Cookies绕过登录

    在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间.如果遇到登录需要输入验证码等情况,就可能出师未捷身先死. 在Web应用中,登录状态通常是通过Cookie中对应的se ...

  6. Selenium+Python ---- 免登录

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  7. Selenium常用操作汇总二——如何操作cookies(转)

    Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. import java.ut ...

  8. selenium webdriver学习(九)------------如何操作cookies(转)

    selenium webdriver学习(九)------------如何操作cookies 博客分类: Selenium-webdriver   Web 测试中我们经常会接触到Cookies,一个C ...

  9. spring mvc 用cookie和拦截器实现自动登录(/免登录)

    Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...

随机推荐

  1. [moka同学笔记]yii2.0表单的使用

    1.创建model   /biaodan.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/08/05 * Tim ...

  2. 跨平台的 SQL 客户端

    The major update to SQL client was to move to the .NET Core networking libraries instead of the nati ...

  3. Fundamentals of speech signal processing

    PDF版资料下载:链接:http://pan.baidu.com/s/1hrKntkw 密码:f2y9

  4. android Adapter剖析理解

    UI控件都是跟Adapter(适配器)打交道的 Adapter: 是用来帮助控件填充数据的中间桥梁 (在开发中大多数Textview控件的内容是依靠数据库传递并显示的如:新闻类) Adapter: 将 ...

  5. Office版本差别引发的语法问题

    由于没有源代码,今天反编译了一个基于.NET的dll类库,再次遇到office版本差异问题,所以把它记录下来. 在反编译时,需要Aspose.Cells 5.3.1(Aspose是一套.NET类库,其 ...

  6. MSCRM 2011 操作大全

    CRM字段类型:货币:new Money(Decimal){SQL更新Money类型字段,需要同时更新_base字段,存在汇率差的时候值不同}查找:new EntityReference(object ...

  7. C++引用笔记

    1.什么是引用: 百度百科里的解释:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.用&符号表示 举例: using namespace std; int _tmai ...

  8. page resizing

    <script type="text/javascript"> $(window).load(function () { var root; root = $(&quo ...

  9. Windows7下Blend for Visual Studio 2012使用问题

    目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7 ...

  10. win8下出现安装sql2012 正在启动操作系统功能"NetFx3"

    今天上午装win8系统,发现在装sql server 2012的时候,一直停在"正在启动操作系统功能"NetFx3""不动了,在网上找了下相关的资料,发现原来N ...