1. 程式人生 > >web UI自動化之chrome-headless

web UI自動化之chrome-headless

什麼是Headless Chrome?

Headless Chrome 是 Chrome 瀏覽器的無介面形態,可以在不開啟瀏覽器的前提下,使用所有Chrome支援的特性,在命令列中執行你的指令碼。相比於其他瀏覽器,Headless Chrome 能夠更加便捷的執行web自動化測試、編寫爬蟲、擷取圖等功能。相比於較早的 PhantomJS,SlimerJS 等,Headless Chrome 則更加貼近瀏覽器環境。如果你曾用過或者熟悉PhantomJS,那麼好,請記住,Headless Chrome 釋出就是來代替phantomjs的。

為什麼是Headless Chrome

  1. 對於UI自動化測試,少了真實瀏覽器載入css,js以及渲染頁面的工作。無頭測試要比真實瀏覽器快的多。
  2. 可以在無介面的伺服器或CI上執行測試,減少了外界的干擾,使自動化測試更穩定。
  3. 在一臺機器上可以模擬執行多個無頭瀏覽器,方便進行併發測試
  4. 它爹是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