這個腳本融合了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是有用信息,具體是哪個屬性,可以觀察相較於未登錄時多出來的屬性,依次實驗