模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验
生活随笔
收集整理的這篇文章主要介紹了
模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、背景:
? ? Selenium是一個web自動化測試框架,也支持從HTML頁面上爬取javascript生成的或AJAX的內容。
? ? selenium2支持通過各種driver(FirfoxDriver、IternetExplorerDriver、OperaDriver、ChromeDriver)驅動真實瀏覽器完成測試的。
? ? selenium也是支持無界面瀏覽器操作的,如集成HtmlUnit和PhantomJs,不是真正的瀏覽器,運行時不會渲染頁面顯示內容,但是支持頁面元素查找、動態js執行等;由于不進行css和gui渲染,運行效率要比真實的瀏覽器快。
? ??
? ? 現在的問題是在windows+eclipse環境下java開發(通過driver驅動的)的程序如何部署到命令行centos下運行selenium呢?
二、選型:
? ?對selenium2支持瀏覽器driver、htmlunit、phantomJs三種進行比較:
1)selenium2集成htmlUnit
? ? htmlUnit是java實現的類瀏覽器程序,包含在selenium server中,無須驅動,直接實例化就行。
? ?用法如下:
? ?WebDriver driver = new HtmlUnitDriver();//
? ?WebDriver driver = new HtmlUnitDriver(true);//支持js
? ?htmlUnit速度快,但對js支持不是很好,適合相對靜態的頁面爬取。
2)selenium2集成phantomJs
? ?速度一般、模擬行為接近真實,但不能模擬不同/特定瀏覽器的行為,如鼠標點擊操作,適合非GUI功能性自動測試。
? ?使用phantomJS配合selenium,可以創建無界面的瀏覽器。
? ?但發現似乎只支持Python語言,Java語言沒有phantomJs實例,只能放棄。
3)真實瀏覽器driver
? ?可真實模擬用戶行為,但效率、穩定性低,但支持特定瀏覽器行為,適合GUI功能測試。
? ?
? ?筆者在開發情況,是選擇真實瀏覽器驅動,支持的比較完整,但要部署到命令行centos下時就需要找解決方案了。 ?
? ?Headless Selenium支持在服務器上運行的健壯的自動化操作,不需要顯示設備。
? ?筆者計劃在命令行centos下采用Headless Selenium方案,用Xvfb創建虛擬的X窗口。
三、設置centos代理服務器聯網:
? ?1)全局設置:
? ? ? #vi /etc/profile
? ? ? export http_proxy=yourproxy:port
? ? ? export ftp_proxy=yourproxy:port
? ?2)單獨yum的代理設置修改/etc/yum.conf
? ?3)單獨wget的代理設置修改/etc/wgetrc
? ?設置聯網方便yum安裝一些組件。
四、centos下部署phantomJS+selenium?
? ?實際生產中沒有選擇該方案,這里給出,只是做參考。
? ?1、安裝PhantomJS:
? ?1)hantomJS 是一個基于WebKit的服務器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。PhantomJS可以用于頁面自動化,網絡監測,網頁截屏,以及無界面測試等。
? ?2)安裝包下載地址:http://phantomjs.org/download.html,包括Windows,Mac OS,Linux版本,自行選擇對應 版本下載解壓即可(為方便使用,可自已為phantomjs設置環境變量),其中帶有一個example文件夾,里面有很多已經寫好的代碼供使用。
? ?3)下載 phantomjs-2.1.1-linux-x86_64.tar.bz2 (22.3 MB) 并解壓;
? ? ? ?#tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
? ? ? ?#cd phantomjs-2.1.1-linux-x86_64/bin
? ? ? ?進入bin文件夾執行測試
? ?4)測試:
? ? ? —新建文本文件hw.js,輸入下面:
? ? ? ? ?#vi hw.js
? ? ? ? ?console.log('Hello, world!');
? ? ? ? ?phantom.exit();
? ? ? —執行
? ? ? ? # ./phantomjs hw.js
? ? ? ? 提示:/lib64/libz.so.1: no version information available
? ? ? ? 更新zlib版本:
? ? ? ? #wget http://zlib.net/zlib-1.2.8.tar.gz
? ? ? ? #tar zxvf zlib-1.2.8.tar.gz
? ? ? ? #cd zlib-1.2.8
? ? ? ? # ./configure
? ? ? ? #make
? ? ? ? #make install
? ? ? ? 覆蓋原版本,可以先備份一下原版本
? ? ? ? #cp /usr/local/lib/libz.so.1 /lib64/ ? ?
? ?5)建立軟鏈:
? ? ? ? #ln -s /tmp/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs?
? ? ? ?命令行下直接使用phantomjs命令,不需要進入bin目錄下執行。
? ?6)參考http://www.phperz.com/article/14/1115/35197.html
? ?2、安裝pip:
? ?1)查看和升級python版本:
? ? ?#python -V ? 是Python 2.6.6
? ? ?升級python版本
? ? ?#wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
? ? ?#tar -xf Python-3.5.2.tgz
? ? ?#cd Python-3.5.2
? ? ?#./configure
? ? ?#make
? ? ?#make install
? ? ?#ln -s /usr/local/bin/python3.5.2 /usr/bin/python
? ?2)下載get-pip.py
? ? ?https://bootstrap.pypa.io/get-pip.py
? ?3)安裝pip:
? ? ?#python get-pip.py
? ?3、安裝selenium
? ?1)pip安裝:
? ? ?#pip install -U selenium
? ?現在可以執行Python代碼實例化webdriver.PhantomJS('phantomjs')爬蟲程序。
五、centos下部署Headless Selenium
? ? 實際生產中選擇了該方案,用Xvfb創建虛擬的X窗口,模擬運行瀏覽器。
? ? Xvfb是一個實現了X11顯示服務協議的顯示服務器。 不同于其他顯示服務器,Xvfb在內存中執行所有的圖形操作,不需要借助任何顯示設備。
? ?1、安裝chrome瀏覽器:
? ? ? chrome對centos6不夠支持,需要安裝很多組件,升級至centos7。
? ? ? #yum install google-chrome-stable?
? ? ? 網上有很多說明配置yum源的,可以參考。
? ?2、安裝Xvfb
? ? ? #yum install Xvfb
? ? ? #yum -y install libXfont
? ? ? #yum install xorg-x11-fonts*
? ?3、啟動Xvfb和瀏覽器
? ? ? #Xvfb -ac:7 -screen 0 1280x1024x8
? ? ? 啟動 chrome
? ? ? ? ? ?export ?DISPLAY=:7 (和上一步的number號相同)
? ? ? ? ? ?chrome www.baidu.com
? ? 由于服務器限制,沒有成功部署到,這里先記錄做參考。
六、移植程序
? ? 將eclipse下的Java工程打包成jar,提交centos下java -jar執行,在啟動瀏覽器和Xvfb情況下執行。
七、總結:了解到selenium框架,并選定Xvfb來虛擬GUI實現centos下運行selenium,當然如果采用python語言可以選擇PhantomJS。
? ? ? ? ? ?在部署過程中,由于聯網環境限制,yum源無法更新也無法安裝,因此只能作為參考先記錄。
? ? ? ? ? ?后續在實際生產中,需要驗證:
? ? 1)centos7+chrome+Xvfb部署,驗證是否可以在命令行下啟動瀏覽器;
? ? 2)chromedriver_x64.exe驅動是否需要在代碼顯示加載;
? ? 3)在前面兩個都滿足情況下,是否可以運行selenium;
? ? Selenium是一個web自動化測試框架,也支持從HTML頁面上爬取javascript生成的或AJAX的內容。
? ? selenium2支持通過各種driver(FirfoxDriver、IternetExplorerDriver、OperaDriver、ChromeDriver)驅動真實瀏覽器完成測試的。
? ? selenium也是支持無界面瀏覽器操作的,如集成HtmlUnit和PhantomJs,不是真正的瀏覽器,運行時不會渲染頁面顯示內容,但是支持頁面元素查找、動態js執行等;由于不進行css和gui渲染,運行效率要比真實的瀏覽器快。
? ??
? ? 現在的問題是在windows+eclipse環境下java開發(通過driver驅動的)的程序如何部署到命令行centos下運行selenium呢?
二、選型:
? ?對selenium2支持瀏覽器driver、htmlunit、phantomJs三種進行比較:
1)selenium2集成htmlUnit
? ? htmlUnit是java實現的類瀏覽器程序,包含在selenium server中,無須驅動,直接實例化就行。
? ?用法如下:
? ?WebDriver driver = new HtmlUnitDriver();//
? ?WebDriver driver = new HtmlUnitDriver(true);//支持js
? ?htmlUnit速度快,但對js支持不是很好,適合相對靜態的頁面爬取。
2)selenium2集成phantomJs
? ?速度一般、模擬行為接近真實,但不能模擬不同/特定瀏覽器的行為,如鼠標點擊操作,適合非GUI功能性自動測試。
? ?使用phantomJS配合selenium,可以創建無界面的瀏覽器。
? ?但發現似乎只支持Python語言,Java語言沒有phantomJs實例,只能放棄。
3)真實瀏覽器driver
? ?可真實模擬用戶行為,但效率、穩定性低,但支持特定瀏覽器行為,適合GUI功能測試。
? ?
? ?筆者在開發情況,是選擇真實瀏覽器驅動,支持的比較完整,但要部署到命令行centos下時就需要找解決方案了。 ?
? ?Headless Selenium支持在服務器上運行的健壯的自動化操作,不需要顯示設備。
? ?筆者計劃在命令行centos下采用Headless Selenium方案,用Xvfb創建虛擬的X窗口。
三、設置centos代理服務器聯網:
? ?1)全局設置:
? ? ? #vi /etc/profile
? ? ? export http_proxy=yourproxy:port
? ? ? export ftp_proxy=yourproxy:port
? ?2)單獨yum的代理設置修改/etc/yum.conf
? ?3)單獨wget的代理設置修改/etc/wgetrc
? ?設置聯網方便yum安裝一些組件。
四、centos下部署phantomJS+selenium?
? ?實際生產中沒有選擇該方案,這里給出,只是做參考。
? ?1、安裝PhantomJS:
? ?1)hantomJS 是一個基于WebKit的服務器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。PhantomJS可以用于頁面自動化,網絡監測,網頁截屏,以及無界面測試等。
? ?2)安裝包下載地址:http://phantomjs.org/download.html,包括Windows,Mac OS,Linux版本,自行選擇對應 版本下載解壓即可(為方便使用,可自已為phantomjs設置環境變量),其中帶有一個example文件夾,里面有很多已經寫好的代碼供使用。
? ?3)下載 phantomjs-2.1.1-linux-x86_64.tar.bz2 (22.3 MB) 并解壓;
? ? ? ?#tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
? ? ? ?#cd phantomjs-2.1.1-linux-x86_64/bin
? ? ? ?進入bin文件夾執行測試
? ?4)測試:
? ? ? —新建文本文件hw.js,輸入下面:
? ? ? ? ?#vi hw.js
? ? ? ? ?console.log('Hello, world!');
? ? ? ? ?phantom.exit();
? ? ? —執行
? ? ? ? # ./phantomjs hw.js
? ? ? ? 提示:/lib64/libz.so.1: no version information available
? ? ? ? 更新zlib版本:
? ? ? ? #wget http://zlib.net/zlib-1.2.8.tar.gz
? ? ? ? #tar zxvf zlib-1.2.8.tar.gz
? ? ? ? #cd zlib-1.2.8
? ? ? ? # ./configure
? ? ? ? #make
? ? ? ? #make install
? ? ? ? 覆蓋原版本,可以先備份一下原版本
? ? ? ? #cp /usr/local/lib/libz.so.1 /lib64/ ? ?
? ?5)建立軟鏈:
? ? ? ? #ln -s /tmp/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs?
? ? ? ?命令行下直接使用phantomjs命令,不需要進入bin目錄下執行。
? ?6)參考http://www.phperz.com/article/14/1115/35197.html
? ?2、安裝pip:
? ?1)查看和升級python版本:
? ? ?#python -V ? 是Python 2.6.6
? ? ?升級python版本
? ? ?#wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
? ? ?#tar -xf Python-3.5.2.tgz
? ? ?#cd Python-3.5.2
? ? ?#./configure
? ? ?#make
? ? ?#make install
? ? ?#ln -s /usr/local/bin/python3.5.2 /usr/bin/python
? ?2)下載get-pip.py
? ? ?https://bootstrap.pypa.io/get-pip.py
? ?3)安裝pip:
? ? ?#python get-pip.py
? ?3、安裝selenium
? ?1)pip安裝:
? ? ?#pip install -U selenium
? ?現在可以執行Python代碼實例化webdriver.PhantomJS('phantomjs')爬蟲程序。
五、centos下部署Headless Selenium
? ? 實際生產中選擇了該方案,用Xvfb創建虛擬的X窗口,模擬運行瀏覽器。
? ? Xvfb是一個實現了X11顯示服務協議的顯示服務器。 不同于其他顯示服務器,Xvfb在內存中執行所有的圖形操作,不需要借助任何顯示設備。
? ?1、安裝chrome瀏覽器:
? ? ? chrome對centos6不夠支持,需要安裝很多組件,升級至centos7。
? ? ? #yum install google-chrome-stable?
? ? ? 網上有很多說明配置yum源的,可以參考。
? ?2、安裝Xvfb
? ? ? #yum install Xvfb
? ? ? #yum -y install libXfont
? ? ? #yum install xorg-x11-fonts*
? ?3、啟動Xvfb和瀏覽器
? ? ? #Xvfb -ac:7 -screen 0 1280x1024x8
? ? ? 啟動 chrome
? ? ? ? ? ?export ?DISPLAY=:7 (和上一步的number號相同)
? ? ? ? ? ?chrome www.baidu.com
? ? 由于服務器限制,沒有成功部署到,這里先記錄做參考。
六、移植程序
? ? 將eclipse下的Java工程打包成jar,提交centos下java -jar執行,在啟動瀏覽器和Xvfb情況下執行。
? ? 參考代碼:
package com.test;import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver;public class headless {public static void main(String[] args) {System.getProperties().setProperty("webdriver.chrome.driver","/tmp/chromedriver.exe"); WebDriver webDriver = new ChromeDriver();webDriver.get("http://www.baidu.com");//訪問網址System.out.println(webDriver.getTitle());webDriver.close();webDriver.quit();} }七、總結:了解到selenium框架,并選定Xvfb來虛擬GUI實現centos下運行selenium,當然如果采用python語言可以選擇PhantomJS。
? ? ? ? ? ?在部署過程中,由于聯網環境限制,yum源無法更新也無法安裝,因此只能作為參考先記錄。
? ? ? ? ? ?后續在實際生產中,需要驗證:
? ? 1)centos7+chrome+Xvfb部署,驗證是否可以在命令行下啟動瀏覽器;
? ? 2)chromedriver_x64.exe驅動是否需要在代碼顯示加載;
? ? 3)在前面兩個都滿足情況下,是否可以運行selenium;
總結
以上是生活随笔為你收集整理的模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟浏览器自动化测试工具Selenium
- 下一篇: Java实现余弦定理计算文本相似度