美文网首页
python+selenium解决写入cookie成功,但仍然是

python+selenium解决写入cookie成功,但仍然是

作者: 云絮飘扬 | 来源:发表于2018-06-12 16:50 被阅读0次

        最近开始学习selenium自动化测试的相关知识,selenium做为一个UI自动化的利器,可以方便的模拟用户操作,完成各种基本操作。

        在学习过程中,遇到一个问题,cookies我可以正常的写入,但是refresh页面后,仍然是未登录状态。多方参考之后,有一种解决方案,即:使用pickle库保存之前登录的cookie,然后进入同域名下其他页面,把之前存的cookie重新load出来以供使用。

        练习网站:博客园,https://www.cnblogs.com/

        首先,使用selenium按照正常的步骤,在注册页面(https://passport.cnblogs.com/user/signin),找到用户名、密码输入框,并点击登录。注意:此时要有个长时间的sleep,主要用于手动操作,这个网站有滑动验证。。。

        手动登录成功后,使用pickle库保存登录成功的cookies

        再然后,打开同域名的页面,再次load之前所存的cookies文件,refresh检查效果,完美的刷新了。代码见下方:

    #coding:utf-8

    from seleniumimport webdriver

    import time,pickle

    url='https://passport.cnblogs.com/user/signin'

    driver = webdriver.Chrome()

    driver.get(url)

    #下面一段是登录,操作登录步骤用于准备保存登录的cookies

    driver.find_element_by_xpath(".//*[@id='input1']").send_keys('scorpio118a')

    driver.find_element_by_xpath(".//*[@id='input2']").send_keys('123456@aA')

    driver.find_element_by_xpath(".//*[@id='signin']").click()

    #下面的15秒是用来手动操作博客园的滑动验证码,否则登录不上去,┭┮﹏┭┮

    time.sleep(15)

    #15秒内操作完毕,登录成功,使用pickle库把登陆成功的cookies保存起来

    pickle.dump(driver.get_cookies(),open("cookie.pk1",'wb'))

    #现在是登录状态,为了表示最后cookie是写入成功的,我将目前页面的cookies删除,并refresh页面,这样就可以展示未登录状态

    driver.delete_all_cookies()

    driver.refresh()

    time.sleep(8)

    #refresh后已经是未登录状态了,然后使用pickle的load方法,将之前的cookie再load回来

    cookies=pickle.load(open("cookie.pk1",'rb'))

    #下面是将每一个cookie数据都加入到driver中,全部加载完成后,refresh页面,你的个人信息又出现了,登录成功

    for cookie in cookies:

    cookie_dict={

    "domain":".cnblogs.com",

    'name':cookie.get('name'),

    'value':cookie.get('value'),

    'expiry':"",

    'path':'/',

    'httpOnly':True,

    'secure':False

        }

    driver.add_cookie(cookie_dict)

    driver.refresh()

    time.sleep(2)

    driver.quit()

    后记:

    之所以使用pickle库,因为我将文件中所有的cookie一一拼写完成,并且加入到driver并不生效(泪目),逼不得已,使用了此方法。如果手动写入cookies能够登录成功,当然更好。但是我失败了,这就作为一种方法,记录一下吧。

    相关文章

      网友评论

          本文标题:python+selenium解决写入cookie成功,但仍然是

          本文链接:https://www.haomeiwen.com/subject/wucreftx.html