Selenium 之 操作 ChromeDriver 可配置項(xiàng)

WebDriver 是一個開源的工具距误,一般用于web應(yīng)用的自動化測試,或者抓取瀏覽器中元素仿野。

在使用 Selenium 過程中,我們需要對 Chrome 做一些初始化設(shè)置她君,以便瀏覽器完成我們期望的行為脚作。

ChromeOptions 屬性

ChromeOptions 可以在瀏覽器啟動之前設(shè)置加載的選項(xiàng),可以通過 Selenium 源碼看到:

class Options(object):
    KEY = "goog:chromeOptions"

    def __init__(self):
        self._binary_location = ''
        self._arguments = []
        self._extension_files = []
        self._extensions = []
        self._experimental_options = {}
        self._debugger_address = None

ChromeOoptions 主要提供以下功能:

  • 設(shè)置 chrome 文件位置(binary_location)
  • 添加啟動配置(arguments)
  • 添加插件(add_extension)
  • 添加設(shè)置參數(shù)(add_experimental_options)

下面就根據(jù)這幾個參數(shù)展開描述:

測試代碼如下
import time
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')

# 最常見的場景是設(shè)置 user-argument 來模擬移動設(shè)備
# 比如下面模擬 iphone6
options.add_argument(
    'user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) '
    'AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 '
    'Mobile/13B143 Safari/601.1"')

# 禁止加載圖片
prefs = {
    'profile.default_content_setting_values.images': 2
}
options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(chrome_options=options)

urls = [
    'http://www.touxiangzhan.com/qinglvtouxiang/',
    'http://www.touxiangzhan.com/nanshengtouxiang/',
    'http://www.touxiangzhan.com/nvshengtouxiang/',
    'http://www.touxiangzhan.com/oumeitouxiang/',
    'http://www.touxiangzhan.com/daizitouxiang/',
    'http://www.touxiangzhan.com/katongtouxiang/',
    'http://www.touxiangzhan.com/gexingtouxiang/',
    'http://www.touxiangzhan.com/weixintouxiang/',
    'http://www.touxiangzhan.com/touxiang/',
    'http://www.touxiangzhan.com/qinglvtouxiang/daizi/',
    'http://www.touxiangzhan.com/qinglvtouxiang/katong/',
    'http://www.touxiangzhan.com/qinglvtouxiang/oumei/',
    'http://www.touxiangzhan.com/qinglvtouxiang/baqi/',
    'http://www.touxiangzhan.com/qinglvtouxiang/feizhuliu/',
    'http://www.touxiangzhan.com/qinglvtouxiang/yizuoyiyou/',
    'http://www.touxiangzhan.com/qinglvtouxiang/jiewen/',
    'http://www.touxiangzhan.com/qinglvtouxiang/weimei/',
    'http://www.touxiangzhan.com/qinglvtouxiang/heibai/',
    'http://www.touxiangzhan.com/qinglvtouxiang/haokan/',
    'http://www.touxiangzhan.com/qinglvtouxiang/xiaoqingxin/',
    'http://www.touxiangzhan.com/qinglvtouxiang/yinanyinv/',
    'http://www.touxiangzhan.com/qinglvtouxiang/keai/'
]
start_time = time.time()
for url in urls:
    try:
        driver.get(url)
    except Exception as e:
        print(e)
print(time.time() - start_time)

driver.quit()

修改 chrome 設(shè)置

一缔刹、禁止加載圖片

在頁面加載過程中球涛,我們或許不需要圖片相關(guān)信息,這個時候校镐,就需要瀏覽器加載頁面時屏蔽圖片亿扁,可以使用下面這種方式:

options = webdriver.ChromeOptions()
prefs = {
    'profile.default_content_setting_values.images': 2
}
prefs = {
    'profile.default_content_setting_values':
        {'images': 2}
} # 這兩行代碼表達(dá)的意思相同,只要給prefs參數(shù)一個明確的json格式就可以
options.add_experimental_option('prefs', prefs)
二鸟廓、添加chrome插件

在使用 ChromeDriver 過程中从祝,經(jīng)常會碰到這樣的問題襟己,我不想加載什么?除了上文說到的圖片牍陌,我們第一反應(yīng)就是廣告了擎浴,這絕對不是我們想獲取的有效信息,什么辦法解決呢毒涧?
簡單贮预!日常過程中我們怎么使用 chrome屏蔽廣告,現(xiàn)在也怎么做链嘀。

第一步萌狂,不用說,要下載離線版的 插件
Chrome 的插件都是crx格式怀泊,如果在應(yīng)用商店直接安裝插件茫藏,插件在安裝完畢后會自動被Chrome 清理,所以需要下載離線版本的插件霹琼。(這里以屏蔽廣告的 Adblock Plus 為例)


搜索并獲取插件id

第二步:進(jìn)入這個神奇的網(wǎng)站 https://yurl.sinaapp.com/crx.php务傲,復(fù)制 插件ID ,按照提示另存為到當(dāng)前文件某個目錄下(這里涉及到文件的相對路徑枣申,所以要自己把控)

根據(jù)插件ID下載離線文件

目前為止已經(jīng)有了插件售葡,設(shè)置 crx 文件到插件選項(xiàng)

options = webdriver.ChromeOptions()
options.add_extension('../source/extension_1_13_4.crx')
# 特別申明,這里的相對路徑是我本地代碼的路徑忠藤,如果有問題挟伙,修改為下載好 
# 的crx文件位置,如果不了解相對路徑模孩,可以先用絕對路徑測試
driver = webdriver.Chrome(chrome_options=options)

啟動后效果如下:


啟動效果
三尖阔、巨無霸初始化方式

毋庸置疑,巨無霸方式可以把初始化的過程夠囊括進(jìn)來
這里的側(cè)重點(diǎn)是如何設(shè)置瀏覽器代理

CHROME = {
"browserName": "chrome",
        "version": "",
        "platform": "ANY",
        "javascriptEnabled": True,
        "chrome.prefs": {"profile.managed_default_content_settings.images": 2},
        "proxy": {
            "httpProxy":"localhost:8118",
            "ftpProxy":None,
            "sslProxy":None,
            "noProxy":None,
            "proxyType":"MANUAL",
            "class":"org.openqa.selenium.Proxy",
            "autodetect":False
            },
        "chrome.switches": ["window-size=1003,719", "allow-running-insecure-content", "disable-web-security", "disk-cache-dir=/var/www/cake2.2.4/app/tmp/cache/selenium-chrome-cache", "no-referrers"],
        }
self.selenium = webdriver.Chrome(desired_capabilities=CHROME)
# 參考來源 https://stackoverflow.com/questions/15165593/set-chrome-prefs-with-python-binding-for-selenium-in-chromedriver
四榨咐、小結(jié)

總體來說介却,所有的 options 設(shè)置選項(xiàng)都是根據(jù) ChromeDriver 暴露出來的配置項(xiàng),塞入我們需要的 dict 格式文件块茁,一旦格式正確齿坷,就可以獲得期望的結(jié)果。這就是工具的使用数焊,

光說不練假把式

最后我們來看看去除非有效信息后頁面加載的效果:(效果相差兩個數(shù)量級)

沒有設(shè)置過濾信息前:
打開22個包含圖片頁面耗費(fèi)時間 144.80
設(shè)置過濾信息后:
打開22個包含圖片頁面耗費(fèi)時間 6.07

(這里針對的是圖片較多網(wǎng)站做的測試永淌,效果明顯點(diǎn))

過濾后結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佩耳,隨后出現(xiàn)的幾起案子仰禀,更是在濱河造成了極大的恐慌,老刑警劉巖蚕愤,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答恶,死亡現(xiàn)場離奇詭異,居然都是意外死亡萍诱,警方通過查閱死者的電腦和手機(jī)悬嗓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裕坊,“玉大人包竹,你說我怎么就攤上這事〖” “怎么了周瞎?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長饵蒂。 經(jīng)常有香客問我声诸,道長,這世上最難降的妖魔是什么退盯? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任彼乌,我火速辦了婚禮,結(jié)果婚禮上渊迁,老公的妹妹穿的比我還像新娘慰照。我一直安慰自己,他們只是感情好琉朽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布毒租。 她就那樣靜靜地躺著,像睡著了一般箱叁。 火紅的嫁衣襯著肌膚如雪墅垮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天蝌蹂,我揣著相機(jī)與錄音噩斟,去河邊找鬼。 笑死孤个,一個胖子當(dāng)著我的面吹牛剃允,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播齐鲤,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斥废,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了给郊?” 一聲冷哼從身側(cè)響起牡肉,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淆九,沒想到半個月后统锤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毛俏,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年饲窿,在試婚紗的時候發(fā)現(xiàn)自己被綠了煌寇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡逾雄,死狀恐怖阀溶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸦泳,我是刑警寧澤银锻,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站做鹰,受9級特大地震影響击纬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜誊垢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一掉弛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喂走,春花似錦殃饿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帖池,卻和暖如春奈惑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睡汹。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工肴甸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人囚巴。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓原在,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彤叉。 傳聞我的和親對象是個殘疾皇子庶柿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容