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()

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

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

相关推荐