网页截图

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

#/usr/bin python
#-*- coding:UTF-8 -*-
#####################截图#####################
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

##截图
driver.get_screenshot_as_file(r"E:\study\python\baidu.jpg")
sleep(5)
driver.quit()

 cookie的处理

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

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

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

driver.get(url)
driver.delete_all_cookies()
for cookie in cookies:
     driver.add_cookie(cookie)
driver.refresh()

#
-*- coding: utf-8 -*- # @Time : 2020/7/17 15:06 # @Author : 饭盆里 # @File : test_cookie.py # @Software: PyCharm # @desc : import shelve from time import sleep import pytest from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By class Test(): def setup(self): options = Options() # 和浏览器打开的调试端口进行通信 # 浏览器要使用 --remote-debugging-port=9222 开启调试, # 由于我环境变量设置了变量,alias driver_debugging=\'/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222\' # 所以可以直接:driver_debugging options.debugger_address = \'127.0.0.1:9222\' self.driver = webdriver.Chrome(options=options) # self.driver = webdriver.Chrome() self.driver.implicitly_wait(3) def teardown(self): self.driver.quit() @pytest.mark.skip def test_baidu(self): self.driver.get(\'https://www.baidu.com/\') self.driver.find_element(By.ID,\'kw\').send_keys(\'hi\') self.driver.find_element(By.XPATH,\'//*[@id="su"]\').click() sleep(5) def test_wework(self): self.driver.get("https://work.weixin.qq.com/") # 获取 cookies # print(self.driver.get_cookies()) 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\'}] # # 创建或者打开一个数据库 db = shelve.open("cookies") # # 将数据存储到 shelve 中 db["cookies"] = cookies # # # 取出数据 cookies = db["cookies"] #把cookie 中的时间戳去除"expiry",然后加入到浏览器的cookies中 for cookie in cookies: if "expiry" in cookie.keys(): cookie.pop("expiry") # 把字典加入到 driver 的 cookie 中 self.driver.add_cookie(cookie) sleep(2) self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts") # sleep(4) self.driver.find_element(By.XPATH, "//*[@id=\'menu_contacts\']").click() # db.close()
  •        手动在代理浏览器页面进行扫码登陆企业微信
  •        用代码获取此时的cookie:
    self.driver.get_cookies()

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

 

 

 

 

 

#/usr/bin python
#-*- coding:UTF-8 -*-
#####################cookie#####################
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

##获取cookie
cookie = driver.get_cookies()
##打印全部cookie
print(cookie)
##打印第一组cookie
print(cookie[0])

#添加cookie   字典形式
driver.add_cookie({\'name\':\'fanpl\',\'value\':\'fanfan\'})
for cookie in driver.get_cookies():
    print("%s --- %s" %(cookie[\'name\'],cookie[\'value\']))
driver.quit()

 自动化测试验证码问题

  验证码作用

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

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

  解决办法

    1.去掉验证码

 

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

 

    2.设置万能码

 

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

 

    3.验证码识别技术(OCR

 

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

 

    4.记录cookie

 

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

 

基于Cookie绕过验证码自动登录

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

 

from selenium import webdriver
from time import sleep

driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")

#手动添加cookie
driver.add_cookie({\'name\':\'BAIDUID\',\'value\':\'9E4BF1D44014…(根据实际获取值填写)\'})
driver.add_cookie({\'name\':\'BDUSS\',\'value\':\'根据实际抓包获取值填写\'})

sleep(2)
driver.refresh()
sleep(3)
driver.quit()

 

 

 

 

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