![]() Selenium庫是一套Web自動化測試工具,有很多功能,它可以幫我們模擬在瀏覽器輸入內(nèi)容和模擬鼠標點擊瀏覽器按鈕. 本文介紹Python調(diào)用Selenium實現(xiàn)模擬瀏覽器輸入和點擊的步驟和方法,并給出最易出現(xiàn)的BUG的解決辦法 ![]() Python學(xué)習(xí)交流群:1004391443,這里有資源共享,技術(shù)解答,還有小編從最基礎(chǔ)的Python資料到項目實戰(zhàn)的學(xué)習(xí)資料都有整理,希望能幫助你更了解python,學(xué)習(xí)python。 一、安裝Selenium pip install Selenium ![]() 二、下載chromedriver.exe 需要下載與瀏覽器版本對應(yīng)的chromedriver.exe到代碼所在目錄下, 下載地址: http://chromedriver.storage./index.html (注意:運行代碼時如果沒有下載與自己的瀏覽器版本匹配的 chromedriver.exe 放到代碼同級目錄下, 會報錯: selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home) ![]() 三、編寫代碼實現(xiàn)模擬瀏覽器 本文以登錄淘寶網(wǎng)首頁為例,在搜索欄輸入搜索內(nèi)容,點擊“搜索”按鈕,(網(wǎng)站加載需要時間,受網(wǎng)速等影響),加載完成后會進入授權(quán)登錄頁面 在提示掃碼登錄的界面,點擊“賬號密碼登錄”(換了頁面,還是可以繼續(xù)點擊和輸入內(nèi)容),具體代碼解釋見注釋 from selenium import webdriverimport time # 聲明瀏覽器(這里用chrome瀏覽器)browser = webdriver.Chrome()try: # get打開指定的url,傳入要打開的url,以淘寶網(wǎng)為例 browser.get('https://www.taobao.com/') # 通過find_element_by_name獲取到網(wǎng)頁標簽,send_keys()輸入內(nèi)容,在搜索欄輸入python browser.find_element_by_name('q').send_keys('python') time.sleep(1) ''' 通過find_element_by_class_name獲取到網(wǎng)頁標簽,click()點擊 注意class名中的空格是表示父子級的關(guān)系,如果有空格,則class_name只取最后一段,然后還要避免有同名的class,不要取錯了 為了避免取錯標簽,優(yōu)先根據(jù)id或name等其他方式取 如:淘寶網(wǎng)的搜索按鈕class name為btn-search tb-bg,用btn-search tb-bg取時報錯,用tb-bg取則成功 ''' # browser.find_element_by_class_name('btn-search tb-bg').click() # 報錯 browser.find_element_by_class_name('tb-bg').click() # 成功 time.sleep(5) # 點擊'密碼登錄'按鈕 # browser.find_element_by_class_name('forget-pwd J_Quick2Static').click() # 報錯 browser.find_element_by_class_name('J_Quick2Static').click() # 正常 time.sleep(10) browser.close()except Exception as e: print('模擬登錄失?。簕}'.format(e)) browser.close() 上面的代碼聲明一個Chrome瀏覽器,通過browser對象獲取瀏覽器標簽進行輸入內(nèi)容和點擊,sleep()模擬瀏覽器加載的過程 按照上面的步驟配置webdriver和編寫代碼即可以實現(xiàn)Selenium的demo. ![]() BUG描述: 使用webdriver聲明瀏覽器后,打開網(wǎng)頁,然后使用find_element_by_class_name('class_name')選擇html標簽時,報錯: Message: invalid selector: Compound class names not permitted 消息:無效選擇器:不允許使用復(fù)合類名 原因分析: 我們通過F12從瀏覽器獲取到的html元素的class name中間有空格,所以提示我們:類名不合法,不允許的類名 解決方法: 方法1.html元素的class name中間的空格是表示父級和子級的關(guān)系,我們調(diào)用以上方法時,使用類名的最后一段就可以了 如選擇html標簽: |
|
來自: flyk0tcfb46p9f > 《AI》