当前位置:   article > 正文

python selenium-webdriver 通过cookie登陆(十一)_webdriver 跳到新页面的cookie

webdriver 跳到新页面的cookie

       上节介绍了浏览器的常用方法,涉及到了cookie的使用,本节介绍一下如何利用cookie进行登陆系统,这里使用到了request模块,我们首先利用request模块,请求登陆地址进行登陆,登陆成功以后获取cookie值,然后再通过add_cookie添加到浏览器,使系统处于登陆状态。这里需要注意的是request请求返回的cookie的格式不能直接传入add_cookie方法,所以这里需要进行转换。

  1. # 这里需要注意区别,按住格式进行转换
  2. # request 请求返回cookie的格式
  3. {'PHPSESSID': 'alvrh1i2h7joj2il2jn3sh7up1', 'uid': '16'}
  4. # selenium方法需要的cookie的格式
  5. {'value': 'alvrh1i2h7joj2il2jn3sh7up1', 'httpOnly': False, 'domain': 'yingxiao.chewumi.com', 'name': 'PHPSESSID', 'secure': False, 'path': '/'}

 

下面看一下例子,来通过cookie登陆然后跳转到圈子详情页面

  1. #-*- coding:utf-8 -*-
  2. import time
  3. import requests
  4. from selenium import webdriver
  5. def get_system_cookies(url,account,password):
  6. '''通过request 登陆系统,获取cookie'''
  7. cookiesList = []
  8. data = {"username":account,"passwd":password}
  9. roomSession = requests.Session()
  10. roomSession.post(url,data=data)
  11. loadCookies = requests.utils.dict_from_cookiejar(roomSession.cookies)
  12. for cookieName,cookieValue in loadCookies.items():
  13. cookies = {}
  14. cookies['name'] = cookieName
  15. cookies['value'] = cookieValue
  16. cookiesList.append(cookies)
  17. return cookiesList
  18. def is_login_status_succeed(driver):
  19. '''判断是否登陆状态,非登陆状态,通过cookie登陆'''
  20. loginUrl = 'http://yingxiao.chewumi.com/login.php' #登陆地址
  21. account = 'account' #账号
  22. password = 'password' #密码
  23. driver.get('http://yingxiao.chewumi.com/index.php') #测试是否为登陆状态
  24. if '请登录' in driver.page_source: #判断是否登陆为登陆页面
  25. for cookie in get_system_cookies(loginUrl,account,password): #如果登陆界面获取cookie
  26. driver.add_cookie(cookie) #添加cookie ,通过Cookie登陆
  27. return driver
  28. def request_circle_details(driver,requestUrl):
  29. '''测试跳转圈子详情'''
  30. is_login_status_succeed(driver)
  31. driver.get(requestUrl)
  32. verifyField = driver.find_element_by_xpath('/html/body/div/div/div[2]/h1').text #获取页面标题
  33. try:
  34. assert verifyField == '圈子详情'
  35. return '测试通过'
  36. except AssertionError as e:
  37. return '测试未通过'
  38. '''测试下效果'''
  39. requestUrl = 'http://yingxiao.chewumi.com/list.php?page=1'
  40. driver = webdriver.Chrome()
  41. driver.maximize_window()
  42. print (request_circle_details(driver,requestUrl))
  43. driver.get(requestUrl)
  44. time.sleep(2)
  45. driver.quit()

通过结果显示我们没有操作操作登陆状态,直接进入了圈子详情到页面。

---------------------------------------------------------------------------------

文章来源:https://www.cnblogs.com/mengyu/p/7078561.html 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/149911
推荐阅读
相关标签
  

闽ICP备14008679号