我們在通過Selenium運行自動化測試時,必須要啟動瀏覽器,瀏覽器的啟動與關閉必然會影響執行效率,而且還會干擾你做其它事情(本機運行的話)。
那能不能把自動化測試的運行放在后台?當然可以!
-
htmlunit 項目可以模擬瀏覽器運行,是一個沒有界面的瀏覽器,運行速度快。
-
PhantomJS 是一個基於webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能,使用webkit來編譯解釋執行JavaScript代碼。任何你可以在基於webkit瀏覽器做的事情,它都能做到。
-
Chrome-headless 模式,Google 自己出的無頭瀏覽器模式。
htmlunit 在Selenium 下面,我都沒跑通過一個 baidu 的 demo, 因為它不打開 UI 界面,所以,你也不知道它后台是如何渲染頁面的。 棄之!
PhantomJS 非常不錯,因為是使用的 QtWebKit 瀏覽器內核渲染頁面,基本可以和真正瀏覽器保持一致。
Chrome-headless 模式, Google 針對 Chrome 瀏覽器 59版 新增加的一種模式,可以讓你不打開UI界面的情況下使用 Chrome 瀏覽器,所以運行效果與 Chrome 保持完美一致。PhantomJS作者表示,你這么搞我失業了啊!
用法
Python Selenium 用法:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.Chrome(chrome_options=chrome_options) ...
Java Selenium用法:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class WebTest { public static void main(String[] args) throws InterruptedException { ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--headless"); WebDriver driver = new ChromeDriver(chromeOptions); ... } }