模拟浏览器自动化测试工具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情况下执行。
参考代码:
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之一eclipse集成开发部署篇
1.背景:在网页自动化测试和网页表单自动交互的场景中,对动态js页面的加载,隐藏链接爬虫和表单元素需要加载js来解析. htmlunit相比较于htmlparser以及httpclient只能解析静态 ...
- 模拟浏览器自动化测试工具Selenium之三页面窗口切换开发篇
不同网站有不同特性,需要掌握selenim基本网页元素定位以及浏览器控制,本文解析网页主要实现以下操作: 1)模拟鼠标操作,点击按钮提交:2)获取浏览器窗口句柄,切换到当前窗口下操作:3)处理不带总页 ...
- 模拟浏览器自动化测试工具Selenium之二Html基本元素开发篇
发现用IE浏览器,有很多动态网站加载错误,只好安装chrome浏览器,然后下载chrome driver来驱动.通过selenium的基本元素定位操作来和网页交互. 网页解析主要动作:1)表单自动填写 ...
- 模拟浏览器自动化测试工具Selenium之四cssSelector元素定位开发篇
Selenium官网的Document里推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath locator速度快,特别是在IE下面(IE没有自己的XP ...
- 模拟浏览器自动化测试工具Selenium之七采集网页信息写入excel
功能:从网页上采集信息写入excel,有鼠标移动到相关元素代码,参考如下: package com.test;import java.io.DataInputStream; import java.i ...
- 模拟浏览器自动化测试工具Selenium之六设置代理篇
在使用Selenium自动化测试时,如果需要设置代理访问网络时,可以参考如下代码: package com.test;import java.util.List; import org.openqa. ...
- Selenium浏览器自动化测试工具
目录 Selenium浏览器自动化测试工具 Selenium模块在爬虫中的使用 Python简单使用Selenium Selenium的基本操作 Selenium爬取动态加载的数据 Selenium动 ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...
- lxd linux系统视频教程,使用snap在CentOS 7系统下部署LXD的方法
本文向你展示在CentOS 7服务器/系统桌面下安装和使用LXD的简单方法. LXD的特点 如下是LXD的最大特色: 设计安全(无特权的容器,资源限制等) 可扩展(来自数千个计算节点上的容器) 直观( ...
最新文章
- 力扣(LeetCode)刷题,简单题(第2期)
- 对ajax回调函数的研究
- JavaScript多态
- 蓝牙BLE ATT剖析(二)-- PDU
- 数据库的辅助工具:My-SqlViewer
- ORM(手写简单ORM)
- The 10th Shandong Provincial Collegiate Programming Contest 2019山东省赛游记+解题报告
- 层次狄利克雷过程HDP(Hierarchical Dirichlet Processes)
- linux常用命令示例
- 用批处理的方式解压文件
- PHP下载文件的正确方式
- popos ubuntu20升级更新AMD显卡GPU驱动
- 100万量子比特,PsiQuantum要怎样实现?
- R语言基于库克距离统计量识别(Cook’s distance)对于回归模型性能或者预测影响(Influential observation)很大的观测样本、可视化库克距离并添加阈值线识别影响力大的样本
- java单例模式_无名小仙男
- 路飞学城出品python全栈工程师学习感受
- Mac使用技巧 - 取词翻译
- DDD 实战 (5):战略设计之上下文映射和系统分层架构
- html窗口载入完成时间,如何记录页面加载时间
- 瑞芯微RK3399嵌入式开发板Wifi 驱动 build in 方式