web UI自動化之chrome-headless
阿新 • • 發佈:2019-01-05
什麼是Headless Chrome?
Headless Chrome 是 Chrome 瀏覽器的無介面形態,可以在不開啟瀏覽器的前提下,使用所有Chrome支援的特性,在命令列中執行你的指令碼。相比於其他瀏覽器,Headless Chrome 能夠更加便捷的執行web自動化測試、編寫爬蟲、擷取圖等功能。相比於較早的 PhantomJS,SlimerJS 等,Headless Chrome 則更加貼近瀏覽器環境。如果你曾用過或者熟悉PhantomJS,那麼好,請記住,Headless Chrome 釋出就是來代替phantomjs的。
為什麼是Headless Chrome
- 對於UI自動化測試,少了真實瀏覽器載入css,js以及渲染頁面的工作。無頭測試要比真實瀏覽器快的多。
- 可以在無介面的伺服器或CI上執行測試,減少了外界的干擾,使自動化測試更穩定。
- 在一臺機器上可以模擬執行多個無頭瀏覽器,方便進行併發測試
- 它爹是Google(自己去聯想,最新JS語法支援啥的就不多廢話了),且Ariya Hidayat已經放棄對Phantom.js的維護。 相比phantomjs,完成任務快,佔用記憶體少。
來個demo測試下
#!/usr/bin/env python # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.chrome.options import Options import datetime chrome_options = Options() chrome_options.add_argument("--headless") base_url = "http://www.baidu.com/" #對應的chromedriver的放置目錄 driver = webdriver.Chrome(executable_path=(r'change to your chromedriver path'), chrome_options=chrome_options) driver.get(base_url + "/") start_time=starttime = datetime.datetime.now() print('this is start_time ',start_time) driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() driver.save_screenshot('screen.png') driver.close() end_time=datetime.datetime.now() print('this is end_time ',end_time)
chromedriver下載地址:http://chromedriver.storage.googleapis.com/index.html
如果相對chrome-headless進一步調研,請移步官網:https://developers.google.cn/web/updates/2017/04/headless-chrome