unittest—selenium自动化登录百度绕过校验

这个脚本融合了unittest的校验,以及selenium的自动化,并且通过派发cookie信息成功绕过百度的验证码,并且利用装饰器成功只打开一次浏览器

#encoding=utf-8

from selenium import webdriver

import time,unittest, re

class Test(unittest.TestCase):

  @classmethod#添加到setUpClass以及下方的 tearDownClass使得只打开一次浏览器,避免重复操作挤占运行空间

  def setUpClass(self):

    self.driver=webdriver.Firefox()

    #driver=webdriver.Chrome()

    self.driver.get("http://www.baidu.com")

  def test_login(self):

    self.driver.add_cookie({u'name':u'BDUSS', u'value':u'自己的value'})#通过抓包找到cookie内BDUSS属性,将自己的value值写入,这是绕过验证码的核心

    time.sleep(3)

    self.driver.refresh()

  def test_login_successful(self):

    text=self.driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[3]/a[7]/span").text#xpath必须双引号,单引号会运行不过去

    #text=self.driver.find_element_by_id('s_username_top').text

    target='用户名'

    str(text)

    #print text

    self.assertEqual(text,target)#此脚本校验成功登陆的原理是成功登陆后会显示自己的用户ID,如果抓到了自己的ID名说明登录成功了

  @classmethod

  def tearDownClass(self):

    self.driver.quit()

if __name__=='__main__':

  unittest.main()

 

介绍一个在制作脚本时的小技巧,一般想要抓到有用的cookie信息,可以通过点击登陆后看最新的报文更新,一般xhr报文的cookie是有用信息,具体是哪个属性,可以观察相较于未登录时多出来的属性,依次实验

原文地址:https://www.cnblogs.com/garvicker/p/9044462.html