【背景】
需要訪問某個舊網址,僅支持IE瀏覽器訪問。為了實現(xiàn)自動化,被迫采用python加selenium、加IE瀏覽器來做。
【實錄】
selenium采用IE瀏覽器方式的資料不多,網上可供參考范例不多。以下實時記錄整個過程,實現(xiàn)調通一個基本訪問實例。
【第一步】安裝正確版本的selenium、urllib3和IE driver。
經查閱資料,目前能找到的最高版本帶IE driver支持的selenium是3.141.0版本
pip install selenium==3.141.0
pip uninstall urllib3
pip install urllib3==1.26.2
【踩坑之一】注意,需要卸載自動安裝的urllib3,因為自動安裝版本為2.1.0,與selenium 3.141.0沖突,會導致如下運行報錯:
?IE driver從這里下載:http://selenium-release.storage.googleapis.com/index.html
將IEDriverServer.exe放置在py腳本程序的當前路徑。
【第二步】上范例代碼
from selenium import webdriver
iedriver = os.path.join(os.getcwd(), 'IEDriverServer.exe')
print(iedriver)
os.environ["webdriver.ie.driver"] = iedriver ?# 調用IE瀏覽器
driver = webdriver.Ie(iedriver, options=options)
driver.get('https://www.baidu.com')
print('登陸成功')
踩坑之二:執(zhí)行上面的范例代碼,會出現(xiàn)如下報錯,
selenium.common.exceptions.SessionNotCreatedException: Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 125%. It should be set to 100%
將win10操作系統(tǒng)顯示設置調回100%即可(chromedriver沒這個問題,僅IE需要)
縮放比例調整為100%后,運行代碼,可以執(zhí)行了,但。。。執(zhí)行不下去
【踩坑之三】在driver.get('https://www.baidu.com')一直執(zhí)行,driver.get方法始終不返回,需要很久很久才會報錯:
也就是說:網頁可以load,但是系統(tǒng)得不到正確的響應,會stuck在起始url頁面,無法繼續(xù)。
【解決方案】調整一個options,調整啟動后的IE瀏覽器“internet選項”兩個地方參數(shù)才行,三者缺一不可。
(1)調整options,范例如下:
from selenium import webdriver?
options = webdriver.IeOptions()?
options.ignore_protected_mode_settings = True?
driver = webdriver.Ie(options=options)?
driver.get("https://www.baidu.com")?
(2)調整internet選項-安全,框框中四個地方都必須調成一樣的,不勾選“啟用保護模式”。
(3)調整--Internet選項--高級,如下圖,不勾選---啟用增強保護模式。
?
【完整代碼范例】
from selenium import webdriver from selenium.webdriver.common.by import By import os import time iedriver = os.path.join(os.getcwd(), 'IEDriverServer.exe') print(iedriver) os.environ["webdriver.ie.driver"] = iedriver # 調用IE瀏覽器 options = webdriver.IeOptions() options.ignore_protected_mode_settings = True browser1 = webdriver.Ie(iedriver, options=options) def exec_js(browser, js_str): browser.execute_script(js_str) def get_csdn_article_list(blog_url): # url = 'https://blog.csdn.net/cdl3' browser1 = webdriver.Ie(iedriver) browser1.get(blog_url) browser1.maximize_window() time.sleep(2) # 關閉各種登錄彈窗 exec_js(browser1, '$(".login-box").css("display","none")') exec_js(browser1, '$(".passport-login-tip-container").css("display","none")') exec_js(browser1, '$(".csdn-toolbar-creative-mp").css("display","none")') main_content = browser1.find_element(By.CLASS_NAME, 'mainContent') article_link_list = [] if main_content: article_list = main_content.find_elements(By.TAG_NAME, 'article') for article in article_list: url2 = article.find_element(By.TAG_NAME, 'a').get_attribute('href') title = article.find_element(By.TAG_NAME, 'h4').text detail = article.find_element(By.CLASS_NAME, 'blog-list-content').text view_num = article.find_element(By.CLASS_NAME, 'view-num').text.replace('·', '') dianzan_num = article.find_element(By.CLASS_NAME, 'give-like-num').text.replace('·', '') print(url2, title, detail, view_num, dianzan_num) article_link_list.append((url2, title)) if len(article_link_list) > 0: return article_link_list return None def test1(): blog_url = 'https://blog.csdn.net/cdl3' get_csdn_article_list(blog_url) browser1.quit() if __name__ == '__main__': test1()
?【實現(xiàn)效果】如下:
文章來源:http://www.zghlxwxcb.cn/news/detail-810826.html
?【發(fā)文章不易,請多多關注、點贊、下載、支持!謝謝!】文章來源地址http://www.zghlxwxcb.cn/news/detail-810826.html
到了這里,關于Win10 python環(huán)境測試selenium加IE瀏覽器自動化-踩坑實錄的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!