• selenium-python-Cookie跳过登录验证码


    问题:系统增加了登录验证码功能,脚本不能正常执行。

    解决方案:

    A.跟开发沟通设置万能码

    B.使用添加Cookie跳过验证码

    Note:这个方法一般只试用测试环境,正式环境由于安全问题,使用该方法无效,而且session更新会使之前的value无效,所以需要不断更新,建议写配置文件。

    1.输入验证码后成功登录,点击F12。

    2获取到:PHPSESSID和_csrf后编写登录脚本:

     1 class CreateADNAppAndroid(unittest.TestCase):
     2     def setUp(self):
     3         self.options = webdriver.ChromeOptions()
     4 
     5         self.options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
     6 
     7        # browser = webdriver.Chrome(chrome_options=options)
     8         self.driver = webdriver.Chrome(chrome_options=self.options)
     9         #调用chrome浏览器并窗口最大化
    10         self.driver.maximize_window()
    11         self.driver.implicitly_wait(30)
    12         self.base_url = "http://e.shiqutech.com"
    13         self.verificationErrors = []
    14         self.accept_next_alert = True
    15     
    16     def test_CreateADNAppAndroid(self):
    17         """投放管理:ADN应用推广:Create ADN App Android AD"""
    18         driver = self.driver
    19         driver.get(self.base_url + "/user/login")
    20         testdata = open ("F:\Auto-social\ChromeAuto\Advertiser\data\ADN\csv\CreateADNAppAndroid.csv",'rb')
    21         user = testdata.readline()
    22         driver.find_element_by_id("loginform-username").clear()
    23         driver.find_element_by_id("loginform-username").send_keys(user)
    24         time.sleep(2)
    25         pw = testdata.readline()
    26         driver.find_element_by_id("loginform-password").send_keys(pw)
    27         time.sleep(2)
    28         source1 = open("F:\Auto-social\ChromeAuto\Advertiser\data\csrf.txt","r")
    29         csrf = source1.read(166)
    30         source1.close()
    31         source2 = open("F:\Auto-social\ChromeAuto\Advertiser\data\PHPSESSID.txt","r")
    32         PHPSESSID = source2.read(26)
    33         source2.close()
    34         driver.add_cookie({'name':'_csrf', 'value':csrf})
    35         driver.add_cookie({'name':'PHPSESSID', 'value':PHPSESSID})
    36         driver.find_element_by_name("login-button").click()
    37         time.sleep(4)

    如果addcookie(34-35)后不需要再添加code#(22-26),直接点击登录就可以了,但是这个会根据server端设置session过期时间而定,如果输入'_csrf'和'PHPSESSID'值无效了,就重新获取下

  • 相关阅读:
    PHP 5.5.0 Alpha5 发布
    Ubuntu Touch 只是另一个 Android 皮肤?
    MariaDB 10 已经为动态列提供文档说明
    Percona Toolkit 2.1.9 发布,MySQL 管理工具
    Oracle Linux 6.4 发布
    Ruby 2.0.0 首个稳定版本(p0)发布
    Apache Pig 0.11.0 发布,大规模数据分析
    Node.js 0.8.21 稳定版发布
    红薯 MySQL 5.5 和 5.6 默认参数值的差异
    Django 1.5 正式版发布,支持 Python 3
  • 原文地址:https://www.cnblogs.com/wxjly/p/6433647.html
Copyright © 2020-2023  润新知