<div id="topics">
<div class="post">
<h1 class="postTitle">
<a id="cb_post_title_url" class="postTitle2" href="https://www.cnblogs.com/tobecrazy/p/3985168.html">Selenium WebDriver 处理cookie</a>
</h1>
<div class="clear"></div>
<div class="postBody">
<div id="cnblogs_post_body" class="blogpost-body"><p>在使用webdriver测试中,很多地方都使用登陆,cookie能够实现不必再次输入用户名密码进行登陆。</p>
<p>首先了解一下Java Cookie类的一些方法。</p>
<div class="para" style="margin-left: 60px;">在jsp中处理cookie数据的常用方法:</div>
<div class="para" style="margin-left: 60px;">getDomain();返回cookie的域名.</div>
<div class="para" style="margin-left: 60px;">getMaxAge();返回cookie的存活时间</div>
<div class="para" style="margin-left: 60px;">getName();返回cookie的名字</div>
<div class="para" style="margin-left: 60px;">getPath();返回cookie适用的路径</div>
<div class="para" style="margin-left: 60px;">getSecure();如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值</div>
<div class="para" style="margin-left: 60px;">getValue();返回cookie的值</div>
<div class="para" style="margin-left: 60px;">getVersion();返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释</div>
<div class="para" style="margin-left: 60px;">setPath(String url);设置Cookie的适用路径</div>
<div class="para" style="margin-left: 60px;">setSecure(Boolean flag);设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或ssl</div>
<div class="para" style="margin-left: 60px;">setValue(String newvalue);cookie创建后设置一个新的值</div>
<div class="para" style="margin-left: 60px;">setVersion(int v);设置cookie所遵从的协议版本</div>
<div class="para">selenium WebDriver 通过driver.manage().getCookies() 和driver.manage().addCookie(ck); 获取cookie 加载cookie</div>
<div class="para"> </div>
<div class="para"> </div>
<div class="para">首先,获取cookie 保存的browser.data内</div>
<div class="para">
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.packt.webdriver.chapter3;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.BufferedWriter;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.File;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileWriter;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.TimeUnit;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.By;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.WebDriver;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.WebElement;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.Cookie;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Cookies {
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* </span><span style="color: #808080;">@author</span><span style="color: #008000;"> Young
*
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> addCookies() {
WebDriver driver </span>=<span style="color: #000000;"> DriverFactory.getChromeDriver();
driver.get(</span>"http://www.zhihu.com/#signin"<span style="color: #000000;">);
driver.manage().timeouts().implicitlyWait(</span>10<span style="color: #000000;">, TimeUnit.SECONDS);
WebElement user </span>=<span style="color: #000000;"> driver
.findElement(By.xpath(</span>"//input[@name='email']"<span style="color: #000000;">));
user.clear();
user.sendKeys(</span>"[email protected]"<span style="color: #000000;">);
WebElement password </span>=<span style="color: #000000;"> driver.findElement(By
.xpath(</span>"//input[@name='password']"<span style="color: #000000;">));
password.clear();
password.sendKeys(</span>"cookies123"<span style="color: #000000;">);
WebElement submit </span>=<span style="color: #000000;"> driver.findElement(By
.xpath(</span>"//button[@class='sign-button']"<span style="color: #000000;">));
submit.submit();
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
Thread.sleep(</span>3000<span style="color: #000000;">);
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (InterruptedException e) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated catch block</span>
<span style="color: #000000;"> e.printStackTrace();
}
File file </span>= <span style="color: #0000ff;">new</span> File("broswer.data"<span style="color: #000000;">);
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> delete file if exists</span>
<span style="color: #000000;"> file.delete();
file.createNewFile();
FileWriter fw </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> FileWriter(file);
BufferedWriter bw </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> BufferedWriter(fw);
</span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (Cookie ck : driver.manage().getCookies()) {
bw.write(ck.getName() </span>+ ";" + ck.getValue() + ";"
+ ck.getDomain() + ";" + ck.getPath() + ";"
+ ck.getExpiry() + ";" +<span style="color: #000000;"> ck.isSecure());
bw.newLine();
}
bw.flush();
bw.close();
fw.close();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
e.printStackTrace();
} </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
System.out.println(</span>"cookie write to file"<span style="color: #000000;">);
}
}
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p> </p>
</div>
<div class="para">
<p>这里,我简单封装了chrome webdriver</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Arrays;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.WebDriver;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.chrome.ChromeDriver;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.chrome.ChromeOptions;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.remote.DesiredCapabilities;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> DriverFactory {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> WebDriver create() {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub</span>
String chromdriver="E:\\chromedriver.exe"<span style="color: #000000;">;
System.setProperty(</span>"webdriver.chrome.driver"<span style="color: #000000;">, chromdriver);
ChromeOptions options </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ChromeOptions();
DesiredCapabilities capabilities </span>=<span style="color: #000000;"> DesiredCapabilities.chrome();
capabilities.setCapability(</span>"chrome.switches"<span style="color: #000000;">,
Arrays.asList(</span>"--start-maximized"<span style="color: #000000;">));
options.addArguments(</span>"--test-type", "--start-maximized"<span style="color: #000000;">);
WebDriver driver</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> ChromeDriver(options);
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> driver;
}
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>接下来 ,读取browser.data,生成cookie 把cookie加载到浏览器</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.packt.webdriver.chapter3;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.BufferedReader;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.File;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileReader;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Date;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.StringTokenizer;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.Cookie;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.WebDriver;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.openqa.selenium.os.WindowsUtils;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> UseCookieLogin {
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* </span><span style="color: #808080;">@author</span><span style="color: #008000;"> Young
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> args
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub</span>
<span style="color: #000000;"> Cookies.addCookies();
WindowsUtils.tryToKillByName(</span>"chrome.exe"<span style="color: #000000;">);
WindowsUtils.getProgramFilesPath();
WebDriver driver</span>=<span style="color: #000000;">DriverFactory.getChromeDriver();
driver.get(</span>"http://www.zhihu.com/"<span style="color: #000000;">);
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
File file</span>=<span style="color: #0000ff;">new</span> File("broswer.data"<span style="color: #000000;">);
FileReader fr</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> FileReader(file);
BufferedReader br</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> BufferedReader(fr);
String line;
</span><span style="color: #0000ff;">while</span>((line=br.readLine())!= <span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
StringTokenizer str</span>=<span style="color: #0000ff;">new</span> StringTokenizer(line,";"<span style="color: #000000;">);
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(str.hasMoreTokens())
{
String name</span>=<span style="color: #000000;">str.nextToken();
String value</span>=<span style="color: #000000;">str.nextToken();
String domain</span>=<span style="color: #000000;">str.nextToken();
String path</span>=<span style="color: #000000;">str.nextToken();
Date expiry</span>=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
String dt;
</span><span style="color: #0000ff;">if</span>(!(dt=str.nextToken()).equals(<span style="color: #0000ff;">null</span><span style="color: #000000;">))
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">expiry=new Date(dt);</span>
<span style="color: #000000;"> System.out.println();
}
</span><span style="color: #0000ff;">boolean</span> isSecure=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Boolean(str.nextToken()).booleanValue();
Cookie ck</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Cookie(name,value,domain,path,expiry,isSecure);
driver.manage().addCookie(ck);
}
}
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception e)
{
e.printStackTrace();
}
driver.get(</span>"http://www.zhihu.com/"<span style="color: #000000;">);
}
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p> </p>
<p>再次打开之后,就是登陆后的页面</p>
</div>
<div class="para" style="margin-left: 60px;"> </div></div><div id="MySignature" style="display: block;">转载请注明出处:http://www.cnblogs.com/tobecrazy/
<br>
<img src="https://www.icode9.com/i/i/?n=15&i=blog/418763/201610/418763-20161014225758390-402578379.gif" height="200" width="350">
<p></p><h1>
软件测试交流QQ群:312937087
we are QA!
</h1><p></p></div>
<div class="clear"></div>
<div id="blog_post_info_block">
<div id="BlogPostCategory">分类: <a href="https://www.cnblogs.com/tobecrazy/category/605623.html" target="_blank">selenium</a></div>
<div id="EntryTag">标签: <a href="https://www.cnblogs.com/tobecrazy/tag/selenium%20webdriver%20%E8%87%AA%E5%8A%A8%E5%8C%96%20%20%E6%B5%8B%E8%AF%95/">selenium webdriver 自动化 测试</a></div>
<div id="blog_post_info"><div id="green_channel">
<a href="javascript:void(0);" id="green_channel_digg" onclick="DiggIt(3985168,cb_blogId,1);green_channel_success(this,'谢谢推荐!');">好文要顶</a>
<a id="green_channel_follow" onclick="follow('85b194c2-e7b5-e111-aa3f-842b2b196315');" href="javascript:void(0);">关注我</a>
<a id="green_channel_favorite" onclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
<a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" onclick="ShareToTsina()"><img src="//common.cnblogs.com/images/icon_weibo_24.png" alt=""></a>
<a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" onclick="shareOnWechat()"><img src="//common.cnblogs.com/images/wechat.png" alt=""></a>
</div>
<div id="author_profile">
<div id="author_profile_info" class="author_profile_info">
<a href="http://home.cnblogs.com/u/tobecrazy/" target="_blank"><img src="//pic.cnblogs.com/face/418763/20130612235133.png" class="author_avatar" alt=""></a>
<div id="author_profile_detail" class="author_profile_info">
<a href="http://home.cnblogs.com/u/tobecrazy/">to be crazy</a><br>
<a href="http://home.cnblogs.com/u/tobecrazy/followees">关注 - 5</a><br>
<a href="http://home.cnblogs.com/u/tobecrazy/followers">粉丝 - 541</a>
</div>
</div>
<div class="clear"></div>
<div id="author_profile_honor"></div>
<div id="author_profile_follow">
<a href="javascript:void(0);" onclick="follow('85b194c2-e7b5-e111-aa3f-842b2b196315');return false;">+加关注</a>
</div>
</div>
<div id="div_digg">
<div class="diggit" onclick="votePost(3985168,'Digg')">
<span class="diggnum" id="digg_count">2</span>
</div>
<div class="buryit" onclick="votePost(3985168,'Bury')">
<span class="burynum" id="bury_count">0</span>
</div>
<div class="clear"></div>
<div class="diggword" id="digg_tips">
</div>
</div>
<script type="text/javascript">
currentDiggType = 0;
</script></div>
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/tobecrazy/p/3969390.html" class="p_n_p_prefix">« </a> 上一篇:<a href="https://www.cnblogs.com/tobecrazy/p/3969390.html" title="发布于2014-09-13 00:41">selenium webdriver 右键另存为下载文件(结合robot and autoIt)</a><br><a href="https://www.cnblogs.com/tobecrazy/p/3997375.html" class="p_n_p_prefix">» </a> 下一篇:<a href="https://www.cnblogs.com/tobecrazy/p/3997375.html" title="发布于2014-09-27 22:26">Selenium FF WebDriver 加载firebug 和设置代理</a><br></div>
</div>
</div>
<div class="postDesc">posted @ <span id="post-date">2014-09-21 23:13</span> <a href="https://www.cnblogs.com/tobecrazy/">to be crazy</a> 阅读(<span id="post_view_count">31760</span>) 评论(<span id="post_comment_count">3</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=3985168" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(3985168);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=134870,cb_entryId=3985168,cb_blogApp=currentBlogApp,cb_blogUserGuid='85b194c2-e7b5-e111-aa3f-842b2b196315',cb_entryCreatedDate='2014/9/21 23:13:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。