在做web测试过程中,常常会遇到登录过程中需要滑动来进行登录,通常滑动处理起来比较麻烦,那么我们可以通过跳过这个滑动,简单方法,让开发在测试版本中屏蔽滑动模块,如果开发不愿意屏蔽的时候,我们应该怎么操作呢?前面介绍接口测试的时候,提到过,我们可以通过cookies来进行模拟登陆,跳过登陆验证,那么在做web自动化的时候能否也通过cookies来跳过登陆呢?
cookies
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),一般存放在客户端上。
cookie我们用的最多的也就是登陆了,作为用户的唯一标识,我们可以通过cookie进行绕过输入验证码的环节,就是通过selenium进行操作cookie,那么selenium对于cookie又那些操作呢?
绕过登陆
通过cookie绕过登陆,肯定先获取登陆cookie,老规矩打开百度,登陆按钮,查看cookie内容,选取适合的cookie
获取到对应的cookie,这里安静介绍下如何书写cookie,cookie是成键值对显示的,也就是类似于字典的内容,
cookie1 = { "domain":"xxxx", # 服务器地址 "name":"xxxx", # cookie名字 "value":"xxxxx" # cookie值 }
通过上面找到需要的cookie值,然后通过上面的模式进行填写,然后通过 add_cookie() 进行添加cookie
# coding:utf-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') cookie1 = { "domain":".baidu.com", "name":"BAIDUID", "value":"xxxxx" } cookie2 = { "domain":".baidu.com", "name":"BDUSS", "value":"xxxxx" } driver.add_cookie(cookie_dict=cookie1) driver.add_cookie(cookie2) time.sleep(3) # 页面刷新 driver.refresh() text = driver.find_element_by_xpath("//*[@class='user-name c-font-normal c-color-t']").text print(text) if text=='我在谁身旁': print('登录成功') else: print('登录失败')
结果就不用给大家列了,很显然是成功的
其他cookie操作
有小伙伴们问,selenium操作cookie就只有这一种吗?那肯定不是的,安静继续拿着百度案例为大家解释,继续上述步骤,通过 get_cookies() 获取全部cookie,也可以通过 get_cookie() 获取指定cookie,当然也可以通过 delete_cookie(name,optionsString) 进行删除cookie
# coding:utf-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') cookie1 = { "domain":".baidu.com", "name":"BAIDUID", "value":"xxxxx" } cookie2 = { "domain":".baidu.com", "name":"BDUSS", "value":"xxxxx" } driver.add_cookie(cookie_dict=cookie1) driver.add_cookie(cookie2) time.sleep(3) # 页面刷新 driver.refresh() # 获取全部cookies cookie_all = driver.get_cookies() print(cookie_all) # 获取单个cookie bduss_cookie = driver.get_cookie('BDUSS') print(bduss_cookie)
展示下打印的cookie值
删除的cookie安静这里没有做演示,大家可以进行练练手,熟能生巧。
如果感觉安静写的对您有帮助,可以点个关注,持续更新中。不懂的或者有问题的可以下方留言。