使用 headless chrome進行測試
注:文章聚合了現在 headless chrome 介紹和使用方式
包含了三個部分
chrome 在 mac 上的安裝和簡單使用(來自官方)
利用 selenium 的 webdrive 驅動 headless chrome(自己新增)
利用Xvfb方式實現偽 headless chrome
概念
Headless模式解決了什麼問題: 自動化工具例如 selenium 利用有頭瀏覽器進行測試,面臨效率和穩定性的影響,所以出現了 Headless Browser, 3年前,無頭瀏覽器 PhantomJS 已經如火如荼出現了,緊跟著 NightmareJS 也成為一名巨星。無頭瀏覽器帶來巨大便利性:頁面爬蟲、自動化測試、WebAutomation...用過PhantomJS的都知道,它的環境是執行在一個封閉的沙盒裡面,在環境內外完全不可通訊,包括API、變數、全域性方法呼叫等。
So, Chrome59 推出了 headless mode,Chrome59版支援的特性,全部可以利用:ES2017ServiceWork(PWA測試隨便耍)無沙盒環境無痛通訊&API呼叫無與倫比的速度...
chrome59 在 mac 上的安裝和簡單使用
現在有兩個方式獲取支援 headless 的 chrome1.chrome 59 beta 版本:下載連結https://dl.google.com/chrome/...2.安裝安裝黃金版 chrome,Chrome Canary :獲取方式:
brew install Caskroom/versions/google-chrome-canary
3.簡單的使用,我就以 chrome 59,演示一下:
用一個命令啟動 Chrome 作為一個 Headless 服務:
./Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --remote-debugging-port=9222 --disable-gpu http://demo.testfire.net
或者切到google chrome 這個程式目錄下
cd /Applications/Google Chrome.app/Contents/MacOS
然後執行
./Google\ Chrome --headless --remote-debugging-port=9222 --disable-gpu http://demo.testfire.net
使用 Headless Chrome 抓取資料:
將要使用 Node.js 去連線我們執行中的 Chrome 例項。你需要確保你已經安裝了 Node,才可以繼續這個步驟。
讓我們生成一個普通的 Node 專案,只有一個依賴那就是 Chrome Remote Interface 包,它可以幫助我們與 Chrome 溝通。然後我們建立一個空白的 index.js 檔案。
mkdir my-headless-chrome && cd my-headless-chrome
npm init --yes
npm install --save chrome-remote-interface
touch index.js
現在我們將要放一些程式碼到index.js。這個模板例子是由 Chrome 團隊提供的。它指示這個瀏覽器導航到github.com,然後通過 client 裡的 Network 屬性捕獲這個頁面上所有的網路請求。
vi index.js
將程式碼複製到裡面:
const CDP = require("chrome-remote-interface");
CDP(client => {
// extract domains
const { Network, Page } = client;
// setup handlers
Network.requestWillBeSent(params => {
console.log(params.request.url);
});
Page.loadEventFired(() => {
client.close();
});
// enable events then start!
Promise.all([Network.enable(), Page.enable()])
.then(() => {
return Page.navigate({ url: "https://github.com" });
})
.catch(err => {
console.error(err);
client.close();
});
}).on("error", err => {
// cannot connect to the remote endpoint
console.error(err);
});
最後啟動我們的 Node 應用。node index.js
我們可以看到 Chrome 發出的所有的網路請求,然而並沒有一個實際的瀏覽器視窗。
$ node index.js
http://demo.testfire.net/
http://demo.testfire.net/style.css
http://demo.testfire.net/images/logo.gif
http://demo.testfire.net/images/header_pic.jpg
http://demo.testfire.net/images/pf_lock.gif
http://demo.testfire.net/images/gradient.jpg
http://demo.testfire.net/images/home1.jpg
http://demo.testfire.net/images/home2.jpg
http://demo.testfire.net/images/home3.jpg
利用 selenium 的 webdrive 驅動 headless chrome
鑑於以上的方式是利用 nodejs直接去操作 headless chrome
我提供一種方式,利用 selenium 的 webdrive 的 chromedriver驅動 chrome59進行 headless chrome 操作
利用 webdrive 的webdriver.ChromeOptions()方法,新增 headless 相關引數,從而驅動 headless的 chrome
下面的程式碼是進行一個 web 登入的過程:
#coding:utf-8
from selenium import webdriver
url = "http://demo.testfire.net"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=chrome_options,executable_path='/Users/xxxx/driver/chromedriver')
driver.get('http://demo.testfire.net')
driver.find_element_by_xpath('//*[@id="_ctl0__ctl0_LoginLink"]').click()
driver.find_element_by_xpath('//*[@id="uid"]').clear()
driver.find_element_by_xpath('//*[@id="uid"]').send_keys('admin')
driver.find_element_by_xpath('//*[@id="passw"]').send_keys('admin')
driver.find_element_by_xpath('//*[@id="login"]/table/tbody/tr[3]/td[2]/input').click()
print driver.current_url
利用Xvfb方式實現偽 headless chrome
當瀏覽器不支援headless模式,可以利用python 的Xvfb實現偽 headless mode,Xvfb只是產生了一個虛擬視窗,瀏覽器只是沒有在當前視窗顯示.
簡單的列舉利用指令碼
#coding:utf-8
from selenium import webdriver
from xvfbwrapper import Xvfb
xvfb = Xvfb(width=1280,height=720)
xvfb.start()
driver = webdriver.Chrome()
driver.get('http://demo.testfire.net')
cookies = driver.get_cookies()
print cookies
driver.close()
xvfb.stop()
相關推薦
使用 headless chrome進行測試
注:文章聚合了現在 headless chrome 介紹和使用方式包含了三個部分chrome 在 mac 上的安裝和簡單使用(來自官方)利用 selenium 的 webdrive 驅動 headless chrome(自己新增)利用Xvfb方式實現偽 headless ch
在vue-cli生成的項目中使用karma+chrome進行單元測試
使用 設計實現 測試用例 runner 服務 進行 ui界面 包含 node 用vue-cli生成項目時,如果選擇了單元測試,那麽會采用karma+mocha作為單元測試框架,默認使用的瀏覽器是PhantomJs。 Karma是一個基於Node.js的JavaScri
1.1 WEB API 在幫助文檔頁面進行測試
進行 for 技術分享 mode scrip pts itl reference ges 這篇文章http://www.cnblogs.com/landeanfen/p/5210356.html寫得比較詳細, 我就挑簡單的來說。 首先用這功能要在WEB API創建的幫助文檔
【轉】利用 selenium 的 webdrive 驅動 headless chrome
edr 使用 fin fire logs ble user () 穩定性 1.參考 使用 headless chrome進行測試 2.概念 Headless模式解決了什麽問題: 自動化工具例如 selenium 利用有頭瀏覽器進行測試,面臨效率和穩定性的影響,所以出現了 H
基於headless chrome的遊戲資源下載實現 (初版)
刪掉 信息 問題: 自動 今天 實現 操作 進度 過程 上周介紹了實現前端資源下載的思路,今天給一個簡單的初版代碼。 首先 基於express啟動一個服務端容器,用於處理前端路由和後段邏輯處理,目錄結構如下: 其中gameDir是遊戲存放的地址,node_module
python利用unittest進行測試用例執行的幾種方式
尋找 顯示 成員 使用方式 main down 測試的 支持 ase 利用python進行測試時,測試用例的加載方式有2種: 一種是通過unittest.main()來啟動所需測試的測試模塊; 一種是添加到testsuite集合中再加載所有的被測試對象,而test
sell01 環境搭建、編寫持久層並進行測試
boot 就會 -s 虛擬 調試 deb project 直接 jdk1 1 環境配置 JDK 1.8 MAVEN 3.5 MYSQL 5.7 VirtualBox 5.1 2 搭建MYSQL環境 下載 VM 和 虛擬鏡像文件 虛擬鏡
selenium(六)Headless Chrome/Firefox--PhantomJS停止支持後,使用無界面模式。
phantomjs alt 頁面 gradient isp lease isa display 功能 簡介: 以前都用PhantomJS來進行無界面模式的自動化測試,或者爬取某些動態頁面。 但是最近selenium更新以後,‘Selenium support for
ApplicationContext進行測試的簡單使用
account contex pri pan -i bsp nes ger utl 第一種:只有一個xml文件public static void main(String[] args) { ApplicationContext ac = null;
selenium之使用chrome瀏覽器測試(附chromedriver與chrome的對應關系表)(轉)
clas color csdn col bsp The chrome 文件解壓 info https://www.cnblogs.com/JHblogs/p/7699951.html 使用WebDriver在Chrome瀏覽器上進行測試時,需要從http://chrom
滲透測試筆記:使用sqlmap對access數據庫進行測試
入侵 顯示空白 src gre mysq access數據庫 經典的 和數 條件 Sqlmap是開源的自動化SQL註入工具,由Python寫成,具有如下特點: 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microso
通過python調用adb命令對app進行測試 啟動/停止app
turn -c 構造方法 PE ram split shell pytho time 轉於博客 https://blog.csdn.net/sunfengye/article/details/77498935 yipianfeng_ye的專 #啟動apk messa
開發者測試-采用精準測試工具對Spring Boot應用進行測試
新建 之間 分享 maven倉庫 第一個 項目 數據傳輸 寫實 blog 簡介:本文主要介紹把現今主流的springboot框架項目和精準測試工具進行結合和應用,通過精準測試的數據穿透、數據采集、測試用例與代碼的雙向追溯、數據分析等一系列精準測試的特有功能,達到對項目質量的
開發者測試(2)-采用精準測試工具對J2EE Guns開發框架進行測試
命令行 時序數據 我們 .sql roc project 控制流程 實現 分享圖片 配置測試Guns Guns簡介 Guns是一個近幾年來基於SpringBoot的開源便利且較新的JavaEE項目開發框架,它整合了springmvc + shiro + mybati
CNN autoencoder 進行異常檢測——TODO,使用keras進行測試
mov ons pure exc gen fine rman ras note https://sefiks.com/2018/03/23/convolutional-autoencoder-clustering-images-with-neural-networks/ h
定義一個Father和Child類,並進行測試
1. 題目描述 定義一個Father和Child類,並進行測試. 要求如下: 1)Father類為外部類,類中定義一個私有的String型別的屬性name,name的值為“zhangjun”。 2)Child類為Father類的內部類,其中定義一個introFather()方法,方法
動態載入的js檔案在Chrome進行除錯時找不到
有時候由於各種原因需要動態載入js檔案,如: $('body').append("<script type='text/javascript' src='./editor.js'><\/script>"); 這時候入如果想對剛加進去的js檔案進行除錯的話,會發現找不到
使用Chrome進行簡單的前端除錯
Chrome DevTools實時編輯HTML和CSS html實時編輯 選擇了一個元素,就可以通過各種方式與它進行互動。通過右鍵單擊“元素”選項卡中的HTML並選擇“編輯為HTML(edit as html)”,您可以實時編輯網頁的標記,Chrome將在編輯完成後立即呈現該標記。
使用FLASH BUILDER 4和FLEXUNIT進行測試驅動開發
https://www.adobe.com/devnet/flex/articles/flashbuilder4_tdd.html 要求 必備知識 所需產品 示例檔案 建議您構建Flex應用程式的經驗。 Flash Builder (下載試用版) flashbuilder_td
R_Studio(cart演算法決策樹)對book3.csv資料用測試集進行測試並評估模型
對book3.csv資料集,實現如下功能: (1)建立訓練集、測試集 (2)用rpart包建立關於類別的cart演算法的決策樹 (3)用測試集進行測試,並評估模型 book3.csv資料集 se