案例:打开百度页面,截图

  1. #/usr/bin python
  2. #-*- coding:UTF-8 -*-
  3. #####################截图#####################
  4. from selenium import webdriver
  5. from time import sleep
  6. driver = webdriver.Chrome()
  7. driver.get("https://www.baidu.com/")
  8. ##截图
  9. driver.get_screenshot_as_file(r"E:\study\python\baidu.jpg")
  10. sleep(5)
  11. driver.quit()

  Cookie是储存在用户本地终端上的数据,实际上是一小段的文本信息。

  帮助 Web 站点保存有关访问者的信息,方便用户的访问。如记住用户名密码实现自动登录。

      在自动化UI测试过程中,也可以用来避开登录

  1. driver.get(url)
  2. driver.delete_all_cookies()
  3. for cookie in cookies:
  4. driver.add_cookie(cookie)
  5. driver.refresh()

  1. #
    -*- coding: utf-8 -*-
  2. # @Time : 2020/7/17 15:06
  3. # @Author : 饭盆里
  4. # @File : test_cookie.py
  5. # @Software: PyCharm
  6. # @desc :
  7. import shelve
  8. from time import sleep
  9. import pytest
  10. from selenium import webdriver
  11. from selenium.webdriver.chrome.options import Options
  12. from selenium.webdriver.common.by import By
  13. class Test():
  14. def setup(self):
  15. options = Options()
  16. # 和浏览器打开的调试端口进行通信
  17. # 浏览器要使用 --remote-debugging-port=9222 开启调试,
  18. # 由于我环境变量设置了变量,alias driver_debugging=\'/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222\'
  19. # 所以可以直接:driver_debugging
  20. options.debugger_address = \'127.0.0.1:9222\'
  21. self.driver = webdriver.Chrome(options=options)
  22. # self.driver = webdriver.Chrome()
  23. self.driver.implicitly_wait(3)
  24. def teardown(self):
  25. self.driver.quit()
  26. @pytest.mark.skip
  27. def test_baidu(self):
  28. self.driver.get(\'https://www.baidu.com/\')
  29. self.driver.find_element(By.ID,\'kw\').send_keys(\'hi\')
  30. self.driver.find_element(By.XPATH,\'//*[@id="su"]\').click()
  31. sleep(5)
  32. def test_wework(self):
  33. self.driver.get("https://work.weixin.qq.com/")
  34. # 获取 cookies
  35. # print(self.driver.get_cookies())
  36. cookies = [{\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': False, \'name\': \'wwrtx.vid\', \'path\': \'/\', \'secure\': False, \'value\': \'1688850531850742\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': True, \'name\': \'wwrtx.vst\', \'path\': \'/\', \'secure\': False, \'value\': \'PI81GkMu8osptnJ46fIu-UWJvR3o8_ViBwX5USscimOQRrHRyNdnruNfbjNLbSU2p3AvksJoKJc6tACT8EJXxe89v6xc0h_5FZUIikMzapf27LnrSjJkfUxRoHkefiaUAoTRgR0a_QBWoj8mEOELID9xl2Etr5gBTKAqCPdJzz3aBZC5b7iKufwcWtgb54qvKyXIK4J5zMnAy8DBzvrRb2pUE_hYYbkptzwyfk5rR7xiK01F3fqXjJwA2QIuI5R_e35ZDA10FFYBxpMtVyvbJA\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': False, \'name\': \'wxpay.vid\', \'path\': \'/\', \'secure\': False, \'value\': \'1688850531850742\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': False, \'name\': \'wxpay.corpid\', \'path\': \'/\', \'secure\': False, \'value\': \'1970325138147142\'}, {\'domain\': \'.work.weixin.qq.com\', \'expiry\': 1626742501, \'httpOnly\': False, \'name\': \'Hm_lvt_9364e629af24cb52acc78b43e8c9f77d\', \'path\': \'/\', \'secure\': False, \'value\': \'1594975399,1594979354,1594979612,1595206501\'}, {\'domain\': \'.qq.com\', \'expiry\': 2147385600, \'httpOnly\': False, \'name\': \'pgv_pvid\', \'path\': \'/\', \'secure\': False, \'value\': \'8752271993\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': True, \'name\': \'wwrtx.ref\', \'path\': \'/\', \'secure\': False, \'value\': \'direct\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': True, \'name\': \'wwrtx.ltype\', \'path\': \'/\', \'secure\': False, \'value\': \'1\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': False, \'name\': \'wwrtx.d2st\', \'path\': \'/\', \'secure\': False, \'value\': \'a3834163\'}, {\'domain\': \'work.weixin.qq.com\', \'expiry\': 1595238009, \'httpOnly\': True, \'name\': \'ww_rtkey\', \'path\': \'/\', \'secure\': False, \'value\': \'oj731e\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': False, \'name\': \'Hm_lpvt_9364e629af24cb52acc78b43e8c9f77d\', \'path\': \'/\', \'secure\': False, \'value\': \'1595206501\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': True, \'name\': \'wwrtx.refid\', \'path\': \'/\', \'secure\': False, \'value\': \'26225621643276726\'}, {\'domain\': \'.work.weixin.qq.com\', \'httpOnly\': True, \'name\': \'wwrtx.sid\', \'path\': \'/\', \'secure\': False, \'value\': \'lvWc6ImOzsx44Nw-2SegyMqIl7_H2EiVGhYcto58RPhmIx18vxT56MuBeZCy7aHo\'}, {\'domain\': \'.work.weixin.qq.com\', \'expiry\': 1595238009, \'httpOnly\': False, \'name\': \'wwrtx.c_gdpr\', \'path\': \'/\', \'secure\': False, \'value\': \'0\'}, {\'domain\': \'.qq.com\', \'expiry\': 1658051906, \'httpOnly\': False, \'name\': \'_ga\', \'path\': \'/\', \'secure\': False, \'value\': \'GA1.2.1583622381.1594901080\'}, {\'domain\': \'.work.weixin.qq.com\', \'expiry\': 1597798500, \'httpOnly\': False, \'name\': \'wwrtx.i18n_lan\', \'path\': \'/\', \'secure\': False, \'value\': \'zh-cn\'}]
  37. # # 创建或者打开一个数据库
  38. db = shelve.open("cookies")
  39. # # 将数据存储到 shelve 中
  40. db["cookies"] = cookies
  41. #
  42. # # 取出数据
  43. cookies = db["cookies"]
  44. #把cookie 中的时间戳去除"expiry",然后加入到浏览器的cookies中
  45. for cookie in cookies:
  46. if "expiry" in cookie.keys():
  47. cookie.pop("expiry")
  48. # 把字典加入到 driver 的 cookie 中
  49. self.driver.add_cookie(cookie)
  50. sleep(2)
  51. self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
  52. # sleep(4)
  53. self.driver.find_element(By.XPATH, "//*[@id=\'menu_contacts\']").click()
  54. # db.close()
  •        手动在代理浏览器页面进行扫码登陆企业微信
  •        用代码获取此时的cookie:
    1. self.driver.get_cookies()

      将此时的cookie打印后,放入一个变量中,以备后续使用

 

 

 

 

 

  1. #/usr/bin python
  2. #-*- coding:UTF-8 -*-
  3. #####################cookie#####################
  4. from selenium import webdriver
  5. from time import sleep
  6. driver = webdriver.Chrome()
  7. driver.get("https://www.baidu.com/")
  8. ##获取cookie
  9. cookie = driver.get_cookies()
  10. ##打印全部cookie
  11. print(cookie)
  12. ##打印第一组cookie
  13. print(cookie[0])
  14. #添加cookie 字典形式
  15. driver.add_cookie({\'name\':\'fanpl\',\'value\':\'fanfan\'})
  16. for cookie in driver.get_cookies():
  17. print("%s --- %s" %(cookie[\'name\'],cookie[\'value\']))
  18. driver.quit()

    不少网站在用户登录、用户提交信息等登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃、保证网站稳定安全性。

但是验证码给自动化测试带来一些不便,使脚本无法正常运行覆盖功能模块。

    1.去掉验证码

 

    这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚本是要在正式环境跑,这样就给系统带来了一定的风险。

 

 

    去掉验证码的主要是安全问题,为了应对在线系统的安全性威胁,可以在修改程序时不取消验证码,而是程序中留一个后门”—设置一个万能验证码,只要用户输入这个万能验证码,程序就认为验证通过,否则按照原先的验证方式进行验证。

 

 

    例如可以通过Python-tesseract 来识别图片验证码,Python-tesseract是光学字符识别Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF)。不过,目前市面上的验证码形式繁多,目前任何一种验证码识别技术,识别率都不是100%

 

 

    通过向浏览器中添加cookie 可以绕过登录的验证码。

 

  案例:使用Cookie绕过百度验证码自动登录账户。(需要用到抓包工具)

 

  1. from selenium import webdriver
  2. from time import sleep
  3. driver=webdriver.Firefox()
  4. driver.get("http://www.baidu.com/")
  5. #手动添加cookie
  6. driver.add_cookie({\'name\':\'BAIDUID\',\'value\':\'9E4BF1D44014…(根据实际获取值填写)\'})
  7. driver.add_cookie({\'name\':\'BDUSS\',\'value\':\'根据实际抓包获取值填写\'})
  8. sleep(2)
  9. driver.refresh()
  10. sleep(3)
  11. driver.quit()

 

 

 

 

版权声明:本文为fanpl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fanpl/articles/9210504.html