化踩坑記:一次被百度安全驗(yàn)證攔下的測(cè)試)
報(bào)錯(cuò)在進(jìn)行《實(shí)驗(yàn)案例1百度搜索軟件測(cè)試》時(shí)發(fā)現(xiàn)代碼跑完assert 軟件測(cè)試 in driver.title 測(cè)試報(bào)錯(cuò)斷言期望頁(yè)面標(biāo)題里包含“軟件測(cè)試”。實(shí)際結(jié)果標(biāo)題并沒(méi)有包含軟件測(cè)試即沒(méi)有成功跳轉(zhuǎn)調(diào)試反復(fù)確認(rèn)代碼編寫(xiě)沒(méi)有錯(cuò)誤在A(yíng)I的協(xié)助下寫(xiě)了debug測(cè)試文件from selenium import webdriver from selenium.webdriver.common.by import By import time d webdriver.Edge() d.get(https://www.baidu.com) d.find_element(By.ID, chat-textarea).send_keys(軟件測(cè)試) d.find_element(By.ID, chat-submit-button).click() time.sleep(3) print(title:, d.title) print(url:, d.current_url) print(窗口數(shù):, len(d.window_handles)) print(h3 個(gè)數(shù):, len(d.find_elements(By.XPATH, //h3))) print(源碼含關(guān)鍵詞:, 軟件測(cè)試 in d.page_source) input(看完頁(yè)面按回車(chē)關(guān)閉) # 讓瀏覽器停住人眼看清到底發(fā)生了什么 d.quit()運(yùn)行結(jié)果如圖所示發(fā)現(xiàn)原因運(yùn)行結(jié)果title百度安全驗(yàn)證原來(lái)我的搜索已經(jīng)成功進(jìn)行了但百度把我攔在了安全驗(yàn)證頁(yè)。百度檢測(cè)到我的瀏覽器是自動(dòng)化工具Selenium于是彈出驗(yàn)證碼要求手動(dòng)驗(yàn)證。這就是為什么標(biāo)題里沒(méi)有軟件測(cè)試——因?yàn)楦緵](méi)到搜索結(jié)果頁(yè)被攔在驗(yàn)證碼頁(yè)面了。解決辦法在search()方法中添加強(qiáng)制等待用于手動(dòng)過(guò)驗(yàn)證代碼如下所示def search(self,keyword): # # river.find_element(By.ID,chat-textarea).send_keys(軟件測(cè)試) # self.driver.find_element(*self.SEARCH_INPUT).send_keys(keyword) self.input_text(self.SEARCH_INPUT,keyword) # # driver.find_element(By.ID,chat-submit-button).click() # self.driver.find_element(*self.SEARCH_BUTTON).click() self.click(self.SEARCH_BUTTON) # 暫停 40 秒手動(dòng)過(guò)驗(yàn)證碼 import time time.sleep(40) # #點(diǎn)擊后切換到新窗口 # self.switch_to_new_window() return self