tiankele0 2020-01-05
由于登录反爬措施的越来越麻烦,甚至出现了12306这种看图识物的无敌验证码,我只能说,我选择死亡。这就衍生出了使用selenium来获取获取cookies。
因为经常会出现验证码,导致我们ui自动化测试工作无法更好开展,那么如何处理这种验证码呢?
像这种滑块和手机验证码的情况下,无法通过正常办法是没有办法进行处理,那么 一般对这种处理有以下几种思路:
1、 通过接口请求,拿到对应验证码信息
2、 让开发配合把验证码搞成万能验证码
3、 注入cookies
那么如何通过注入cookies的形式来实现呢?
首先我们先通过自动化形式打开我们登录页面,此时我们加一定的延时时间,手动登录后,打印出来cookies信息,此时我们就知道所需要的cookies信息了。
driver = webdriver.Chrome() driver.get("https://fly.layui.com/user/login/") time.sleep(3) cookies = driver.get_cookies() print (cookies) 拿到cookies信息后,我们此时就可以去写登录的代码去免登陆了: driver = webdriver.Chrome() driver.get("https://fly.layui.com/user/login/") cookies_01 = {‘domain‘: ‘fly.layui.com‘, ‘expiry‘: 15522.125036, ‘httpOnly‘: True, ‘name‘: ‘fly-layui‘, ‘path‘: ‘/‘, ‘secure‘: False, ‘value‘: ‘s%3AwqpG2eBNqbfd6lmmWLc-DTiNP_.EAy1gm0u%2BCI8SMAxkFkaRWxUoGByz0g4RDXySLsjOfo‘} cookies_02 = {‘domain‘: ‘.layui.com‘, ‘expiry‘: 1567495108, ‘httpOnly‘: False, ‘name‘: ‘Hm_lvt_d214947968792b839fd669a4decaaffc‘, ‘path‘: ‘/‘, ‘secure‘: False, ‘value‘: ‘1551959096‘} cookies_03 = {‘domain‘: ‘.layui.com‘, ‘httpOnly‘: False, ‘name‘: ‘Hm_lpvt_d214947968792b839fd669a4decaaffc‘, ‘path‘: ‘/‘, ‘secure‘: False, ‘value‘: ‘1558659109‘} driver.add_cookie(cookies_01) driver.add_cookie(cookies_02) driver.add_cookie(cookies_03) driver.refresh() 刷新后就可以自动登录了。 但是这存在一个问题就是,如果cookies信息很多,一条条手动去添加过去麻烦,所以我们可以先把他存到一个文件中: cookiesFile = json.dumps(cookies) with open(‘cookiesFile.json‘, ‘w‘) as filemy: filemy.write(cookiesFile) 这样你之前的cookies信息就会存在cookies文件中,下次要去使用就直接读文件就好了,具体实现如下: with open(‘cookiesFile.json‘,‘r‘) as filemy: cookiesInfo=json.loads(filemy.read()) for cc in range(0,len(cookiesInfo)): driver.add_cookie(cookiesInfo[cc]) driver.refresh() 此时通过refresh后,我们就直接登入了系统,是不是很方便呢
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin