當(dāng)前位置:
首頁(yè) >
模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验
發(fā)布時(shí)間:2025/4/16
64
豆豆
生活随笔
收集整理的這篇文章主要介紹了
模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、背景:
? ? Selenium是一個(gè)web自動(dòng)化測(cè)試框架,也支持從HTML頁(yè)面上爬取javascript生成的或AJAX的內(nèi)容。
? ? selenium2支持通過(guò)各種driver(FirfoxDriver、IternetExplorerDriver、OperaDriver、ChromeDriver)驅(qū)動(dòng)真實(shí)瀏覽器完成測(cè)試的。
? ? selenium也是支持無(wú)界面瀏覽器操作的,如集成HtmlUnit和PhantomJs,不是真正的瀏覽器,運(yùn)行時(shí)不會(huì)渲染頁(yè)面顯示內(nèi)容,但是支持頁(yè)面元素查找、動(dòng)態(tài)js執(zhí)行等;由于不進(jìn)行css和gui渲染,運(yùn)行效率要比真實(shí)的瀏覽器快。
? ??
? ? 現(xiàn)在的問(wèn)題是在windows+eclipse環(huán)境下java開(kāi)發(fā)(通過(guò)driver驅(qū)動(dòng)的)的程序如何部署到命令行centos下運(yùn)行selenium呢?
二、選型:
? ?對(duì)selenium2支持瀏覽器driver、htmlunit、phantomJs三種進(jìn)行比較:
1)selenium2集成htmlUnit
? ? htmlUnit是java實(shí)現(xiàn)的類(lèi)瀏覽器程序,包含在selenium server中,無(wú)須驅(qū)動(dòng),直接實(shí)例化就行。
? ?用法如下:
? ?WebDriver driver = new HtmlUnitDriver();//
? ?WebDriver driver = new HtmlUnitDriver(true);//支持js
? ?htmlUnit速度快,但對(duì)js支持不是很好,適合相對(duì)靜態(tài)的頁(yè)面爬取。
2)selenium2集成phantomJs
? ?速度一般、模擬行為接近真實(shí),但不能模擬不同/特定瀏覽器的行為,如鼠標(biāo)點(diǎn)擊操作,適合非GUI功能性自動(dòng)測(cè)試。
? ?使用phantomJS配合selenium,可以創(chuàng)建無(wú)界面的瀏覽器。
? ?但發(fā)現(xiàn)似乎只支持Python語(yǔ)言,Java語(yǔ)言沒(méi)有phantomJs實(shí)例,只能放棄。
3)真實(shí)瀏覽器driver
? ?可真實(shí)模擬用戶(hù)行為,但效率、穩(wěn)定性低,但支持特定瀏覽器行為,適合GUI功能測(cè)試。
? ?
? ?筆者在開(kāi)發(fā)情況,是選擇真實(shí)瀏覽器驅(qū)動(dòng),支持的比較完整,但要部署到命令行centos下時(shí)就需要找解決方案了。 ?
? ?Headless Selenium支持在服務(wù)器上運(yùn)行的健壯的自動(dòng)化操作,不需要顯示設(shè)備。
? ?筆者計(jì)劃在命令行centos下采用Headless Selenium方案,用Xvfb創(chuàng)建虛擬的X窗口。
三、設(shè)置centos代理服務(wù)器聯(lián)網(wǎng):
? ?1)全局設(shè)置:
? ? ? #vi /etc/profile
? ? ? export http_proxy=yourproxy:port
? ? ? export ftp_proxy=yourproxy:port
? ?2)單獨(dú)yum的代理設(shè)置修改/etc/yum.conf
? ?3)單獨(dú)wget的代理設(shè)置修改/etc/wgetrc
? ?設(shè)置聯(lián)網(wǎng)方便yum安裝一些組件。
四、centos下部署phantomJS+selenium?
? ?實(shí)際生產(chǎn)中沒(méi)有選擇該方案,這里給出,只是做參考。
? ?1、安裝PhantomJS:
? ?1)hantomJS 是一個(gè)基于WebKit的服務(wù)器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標(biāo)準(zhǔn): DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。PhantomJS可以用于頁(yè)面自動(dòng)化,網(wǎng)絡(luò)監(jiān)測(cè),網(wǎng)頁(yè)截屏,以及無(wú)界面測(cè)試等。
? ?2)安裝包下載地址:http://phantomjs.org/download.html,包括Windows,Mac OS,Linux版本,自行選擇對(duì)應(yīng) 版本下載解壓即可(為方便使用,可自已為phantomjs設(shè)置環(huán)境變量),其中帶有一個(gè)example文件夾,里面有很多已經(jīng)寫(xiě)好的代碼供使用。
? ?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
? ? ? ?進(jìn)入bin文件夾執(zhí)行測(cè)試
? ?4)測(cè)試:
? ? ? —新建文本文件hw.js,輸入下面:
? ? ? ? ?#vi hw.js
? ? ? ? ?console.log('Hello, world!');
? ? ? ? ?phantom.exit();
? ? ? —執(zhí)行
? ? ? ? # ./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命令,不需要進(jìn)入bin目錄下執(zhí)行。
? ?6)參考http://www.phperz.com/article/14/1115/35197.html
? ?2、安裝pip:
? ?1)查看和升級(jí)python版本:
? ? ?#python -V ? 是Python 2.6.6
? ? ?升級(jí)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
? ?現(xiàn)在可以執(zhí)行Python代碼實(shí)例化webdriver.PhantomJS('phantomjs')爬蟲(chóng)程序。
五、centos下部署Headless Selenium
? ? 實(shí)際生產(chǎn)中選擇了該方案,用Xvfb創(chuàng)建虛擬的X窗口,模擬運(yùn)行瀏覽器。
? ? Xvfb是一個(gè)實(shí)現(xiàn)了X11顯示服務(wù)協(xié)議的顯示服務(wù)器。 不同于其他顯示服務(wù)器,Xvfb在內(nèi)存中執(zhí)行所有的圖形操作,不需要借助任何顯示設(shè)備。
? ?1、安裝chrome瀏覽器:
? ? ? chrome對(duì)centos6不夠支持,需要安裝很多組件,升級(jí)至centos7。
? ? ? #yum install google-chrome-stable?
? ? ? 網(wǎng)上有很多說(shuō)明配置yum源的,可以參考。
? ?2、安裝Xvfb
? ? ? #yum install Xvfb
? ? ? #yum -y install libXfont
? ? ? #yum install xorg-x11-fonts*
? ?3、啟動(dòng)Xvfb和瀏覽器
? ? ? #Xvfb -ac:7 -screen 0 1280x1024x8
? ? ? 啟動(dòng) chrome
? ? ? ? ? ?export ?DISPLAY=:7 (和上一步的number號(hào)相同)
? ? ? ? ? ?chrome www.baidu.com
? ? 由于服務(wù)器限制,沒(méi)有成功部署到,這里先記錄做參考。
六、移植程序
? ? 將eclipse下的Java工程打包成jar,提交centos下java -jar執(zhí)行,在啟動(dòng)瀏覽器和Xvfb情況下執(zhí)行。
七、總結(jié):了解到selenium框架,并選定Xvfb來(lái)虛擬GUI實(shí)現(xiàn)centos下運(yùn)行selenium,當(dāng)然如果采用python語(yǔ)言可以選擇PhantomJS。
? ? ? ? ? ?在部署過(guò)程中,由于聯(lián)網(wǎng)環(huán)境限制,yum源無(wú)法更新也無(wú)法安裝,因此只能作為參考先記錄。
? ? ? ? ? ?后續(xù)在實(shí)際生產(chǎn)中,需要驗(yàn)證:
? ? 1)centos7+chrome+Xvfb部署,驗(yàn)證是否可以在命令行下啟動(dòng)瀏覽器;
? ? 2)chromedriver_x64.exe驅(qū)動(dòng)是否需要在代碼顯示加載;
? ? 3)在前面兩個(gè)都滿(mǎn)足情況下,是否可以運(yùn)行selenium;
? ? Selenium是一個(gè)web自動(dòng)化測(cè)試框架,也支持從HTML頁(yè)面上爬取javascript生成的或AJAX的內(nèi)容。
? ? selenium2支持通過(guò)各種driver(FirfoxDriver、IternetExplorerDriver、OperaDriver、ChromeDriver)驅(qū)動(dòng)真實(shí)瀏覽器完成測(cè)試的。
? ? selenium也是支持無(wú)界面瀏覽器操作的,如集成HtmlUnit和PhantomJs,不是真正的瀏覽器,運(yùn)行時(shí)不會(huì)渲染頁(yè)面顯示內(nèi)容,但是支持頁(yè)面元素查找、動(dòng)態(tài)js執(zhí)行等;由于不進(jìn)行css和gui渲染,運(yùn)行效率要比真實(shí)的瀏覽器快。
? ??
? ? 現(xiàn)在的問(wèn)題是在windows+eclipse環(huán)境下java開(kāi)發(fā)(通過(guò)driver驅(qū)動(dòng)的)的程序如何部署到命令行centos下運(yùn)行selenium呢?
二、選型:
? ?對(duì)selenium2支持瀏覽器driver、htmlunit、phantomJs三種進(jìn)行比較:
1)selenium2集成htmlUnit
? ? htmlUnit是java實(shí)現(xiàn)的類(lèi)瀏覽器程序,包含在selenium server中,無(wú)須驅(qū)動(dòng),直接實(shí)例化就行。
? ?用法如下:
? ?WebDriver driver = new HtmlUnitDriver();//
? ?WebDriver driver = new HtmlUnitDriver(true);//支持js
? ?htmlUnit速度快,但對(duì)js支持不是很好,適合相對(duì)靜態(tài)的頁(yè)面爬取。
2)selenium2集成phantomJs
? ?速度一般、模擬行為接近真實(shí),但不能模擬不同/特定瀏覽器的行為,如鼠標(biāo)點(diǎn)擊操作,適合非GUI功能性自動(dòng)測(cè)試。
? ?使用phantomJS配合selenium,可以創(chuàng)建無(wú)界面的瀏覽器。
? ?但發(fā)現(xiàn)似乎只支持Python語(yǔ)言,Java語(yǔ)言沒(méi)有phantomJs實(shí)例,只能放棄。
3)真實(shí)瀏覽器driver
? ?可真實(shí)模擬用戶(hù)行為,但效率、穩(wěn)定性低,但支持特定瀏覽器行為,適合GUI功能測(cè)試。
? ?
? ?筆者在開(kāi)發(fā)情況,是選擇真實(shí)瀏覽器驅(qū)動(dòng),支持的比較完整,但要部署到命令行centos下時(shí)就需要找解決方案了。 ?
? ?Headless Selenium支持在服務(wù)器上運(yùn)行的健壯的自動(dòng)化操作,不需要顯示設(shè)備。
? ?筆者計(jì)劃在命令行centos下采用Headless Selenium方案,用Xvfb創(chuàng)建虛擬的X窗口。
三、設(shè)置centos代理服務(wù)器聯(lián)網(wǎng):
? ?1)全局設(shè)置:
? ? ? #vi /etc/profile
? ? ? export http_proxy=yourproxy:port
? ? ? export ftp_proxy=yourproxy:port
? ?2)單獨(dú)yum的代理設(shè)置修改/etc/yum.conf
? ?3)單獨(dú)wget的代理設(shè)置修改/etc/wgetrc
? ?設(shè)置聯(lián)網(wǎng)方便yum安裝一些組件。
四、centos下部署phantomJS+selenium?
? ?實(shí)際生產(chǎn)中沒(méi)有選擇該方案,這里給出,只是做參考。
? ?1、安裝PhantomJS:
? ?1)hantomJS 是一個(gè)基于WebKit的服務(wù)器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標(biāo)準(zhǔn): DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。PhantomJS可以用于頁(yè)面自動(dòng)化,網(wǎng)絡(luò)監(jiān)測(cè),網(wǎng)頁(yè)截屏,以及無(wú)界面測(cè)試等。
? ?2)安裝包下載地址:http://phantomjs.org/download.html,包括Windows,Mac OS,Linux版本,自行選擇對(duì)應(yīng) 版本下載解壓即可(為方便使用,可自已為phantomjs設(shè)置環(huán)境變量),其中帶有一個(gè)example文件夾,里面有很多已經(jīng)寫(xiě)好的代碼供使用。
? ?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
? ? ? ?進(jìn)入bin文件夾執(zhí)行測(cè)試
? ?4)測(cè)試:
? ? ? —新建文本文件hw.js,輸入下面:
? ? ? ? ?#vi hw.js
? ? ? ? ?console.log('Hello, world!');
? ? ? ? ?phantom.exit();
? ? ? —執(zhí)行
? ? ? ? # ./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命令,不需要進(jìn)入bin目錄下執(zhí)行。
? ?6)參考http://www.phperz.com/article/14/1115/35197.html
? ?2、安裝pip:
? ?1)查看和升級(jí)python版本:
? ? ?#python -V ? 是Python 2.6.6
? ? ?升級(jí)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
? ?現(xiàn)在可以執(zhí)行Python代碼實(shí)例化webdriver.PhantomJS('phantomjs')爬蟲(chóng)程序。
五、centos下部署Headless Selenium
? ? 實(shí)際生產(chǎn)中選擇了該方案,用Xvfb創(chuàng)建虛擬的X窗口,模擬運(yùn)行瀏覽器。
? ? Xvfb是一個(gè)實(shí)現(xiàn)了X11顯示服務(wù)協(xié)議的顯示服務(wù)器。 不同于其他顯示服務(wù)器,Xvfb在內(nèi)存中執(zhí)行所有的圖形操作,不需要借助任何顯示設(shè)備。
? ?1、安裝chrome瀏覽器:
? ? ? chrome對(duì)centos6不夠支持,需要安裝很多組件,升級(jí)至centos7。
? ? ? #yum install google-chrome-stable?
? ? ? 網(wǎng)上有很多說(shuō)明配置yum源的,可以參考。
? ?2、安裝Xvfb
? ? ? #yum install Xvfb
? ? ? #yum -y install libXfont
? ? ? #yum install xorg-x11-fonts*
? ?3、啟動(dòng)Xvfb和瀏覽器
? ? ? #Xvfb -ac:7 -screen 0 1280x1024x8
? ? ? 啟動(dòng) chrome
? ? ? ? ? ?export ?DISPLAY=:7 (和上一步的number號(hào)相同)
? ? ? ? ? ?chrome www.baidu.com
? ? 由于服務(wù)器限制,沒(méi)有成功部署到,這里先記錄做參考。
六、移植程序
? ? 將eclipse下的Java工程打包成jar,提交centos下java -jar執(zhí)行,在啟動(dòng)瀏覽器和Xvfb情況下執(zhí)行。
? ? 參考代碼:
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");//訪問(wèn)網(wǎng)址System.out.println(webDriver.getTitle());webDriver.close();webDriver.quit();} }七、總結(jié):了解到selenium框架,并選定Xvfb來(lái)虛擬GUI實(shí)現(xiàn)centos下運(yùn)行selenium,當(dāng)然如果采用python語(yǔ)言可以選擇PhantomJS。
? ? ? ? ? ?在部署過(guò)程中,由于聯(lián)網(wǎng)環(huán)境限制,yum源無(wú)法更新也無(wú)法安裝,因此只能作為參考先記錄。
? ? ? ? ? ?后續(xù)在實(shí)際生產(chǎn)中,需要驗(yàn)證:
? ? 1)centos7+chrome+Xvfb部署,驗(yàn)證是否可以在命令行下啟動(dòng)瀏覽器;
? ? 2)chromedriver_x64.exe驅(qū)動(dòng)是否需要在代碼顯示加載;
? ? 3)在前面兩個(gè)都滿(mǎn)足情況下,是否可以運(yùn)行selenium;
總結(jié)
以上是生活随笔為你收集整理的模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 模拟浏览器自动化测试工具Selenium
- 下一篇: 分布式发布订阅消息系统Kafka单实例测