zoukankan      html  css  js  c++  java
  • 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'值无效了,就重新获取下

  • 相关阅读:
    mybatis源码追踪2——将结果集映射为map
    Mybatis的cache
    mybatis拦截器
    mybatis中单个参数的引用
    mybatis源码追踪1——Mapper方法用法解析
    win8 下 intellij idea 13 中文输入覆盖的问题
    firebug中html显示为灰色的原因总结
    extjs4.0以上添加多行工具栏的方法
    去除eclipse的validating
    An interview question from MicroStrategy
  • 原文地址:https://www.cnblogs.com/wxjly/p/6433647.html
Copyright © 2011-2022 走看看