Selenium+Java⾃动化之如何优雅绕过验证码
前⾔:
验证码问题对于每个ui⾃动化的同学⽽⾔,相信都是个蛋疼的问题,对于验证码的处理我个⼈不提倡破解,不要去想破解⽅法,这个验证码本来就是为了防⽌别⼈⾃动化登录的。如果你们公司的验证码很容易被你破解了,那么只能说你们公司验证码级别不⾼,去建议开发提⾼验证码级别了。
对于验证码,要么是让开发把验证码写死(传说中的万能验证码),如:1234,要么就是低调的尽量绕过去。
下⾯本⽂来介绍下如何绕过下图验证码,进⼊博客园
⼯具:
<
IDEA/Eclipse
selenium的cookie操作
⼀、使⽤Fiddler抓包
1.⼀般登陆⽹站成功后,会⽣成⼀个已登录状态的cookie,那么只需要直接把这个值拿到,⽤selenium进⾏addCookie操作即可。
2.可以先⼿动登录⼀次,然后抓取这个cookie,这⾥我们就需要⽤抓包⼯具fiddler了
3.先打开博客园登录界⾯,⼿动输⼊账号和密码(不要点登录按钮)
4.打开fiddler抓包⼯具,此时再点博客园登录按钮
5.登录成功后,再查看cookie变化,发现多了两组参数,多的这两组参数就是我们想要的,copy出来,⼀会有⽤
⼆、cookie操作
1.这⾥需要添加两个cookie,⼀个是.CNBlogsCookie,另外⼀个是.Cnblogs.AspNetCore.Cookies。
2.我这⾥打开的⽹页是博客园⼦的⾸页:homeblogs/,没进⼊登录页。
3.添加cookie后刷新页⾯,接下来就是见证奇迹的时刻了。
4.关于cookie操作,有兴趣的同学可查看官⽅api
5.这⾥我们只使⽤addCookie这个接⼝的⽅法实现
三、参考代码
Cookie cookie=new Cookie("key", "value");
driver.manage().addCookie(cookie);
package st.demo;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import stng.annotations.Test;
import stng.annotations.BeforeClass;
import stng.annotations.AfterClass;
import java.util.Set;
import urrent.TimeUnit;
/**
* @author longrong.lang
* 绕过验证码登陆
*/
public class LoginWithCookie {
WebDriver driver;
效果图:
有⼏点需要注意:
1.登录时候要勾选下次⾃动登录按钮。
2.add_cookie()只添加name和value,对于博客园的登录是不成功。
3.本⽅法并不适合所有的⽹站,⼀般像博客园这种记住登录状态的才会适合。学习过程中有遇到疑问的,可以加selenium(java) QQ流:631646987 @BeforeClass
public void beforeClass() {
System.setProperty("webdriver.chrome.driver", ""); driver = new ChromeDriver();
}
@Test
selenium获取cookiepublic void testLoginWithCookie() {
<("homeblogs/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //cookie 遍历使⽤
Set<Cookie> cookies = driver.manage().getCookies();
for (Cookie cookie : cookies) {
System.out.Name() + "\t" + Value()); }
Cookie cookie = new Cookie("key", "value");
//添加cookie 操作
driver.manage().addCookie(cookie);
Cookie cookie1 = new Cookie("key", "value");
driver.manage().addCookie(cookie1);
Cookie cookie2 = new Cookie(".key", "value");
driver.manage().addCookie(cookie2);
Cookie cookie3 = new Cookie("key", "value");
driver.manage().addCookie(cookie3);
driver.manage().window().maximize();
//下⾯是见证奇迹的时候了
driver.navigate().refresh();
}
@AfterClass
public void afterClass() {
//driver.quit();
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论