selenium2支持无界面操作(HtmlUnit和PhantomJs)
selenium2支持无界面操作(HtmlUnit和PhantomJs)
selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试的。
其实selenium也是支持无界面浏览器操作的。比如说HtmlUnit和PhantomJs。他们都不是真正的浏览器,运行时不会渲染页面显示内容,但是支持页面元素查找,js的执行等;由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多。
1.htmlUnit是java实现的类浏览器程序,包含在selenium server中,无须驱动,直接实例化就行。
行为描述 | 行为 | HtmlUnitDriver | HtmlUnitDriver(true) | PhantomJSDriver | FirefoxDriver |
文本框input | 输入文本 | yes | yes | yes | yes |
按钮button | 点击按钮 | yes | yes | yes | yes |
超链接a | 点击 | yes | yes | no | yes |
下拉列表select | 选择选项 | yes | yes | yes | yes |
复选框checkbox | 点击 | yes | yes | yes | yes |
Alert(显示带有一条指定消息和一个 OK 按钮的警告框) | 点击 | no | no | no | yes |
Promprt(显示可提示用户进行输入的对话框) | 点击 | no | no | no | yes |
driver类型 | 优点 | 缺点 | 应用 |
真实浏览器driver | 真实模拟用户行为 | 效率、稳定性低 | 浏览器兼容性测试 |
HtmlUnit | 速度快 | js引擎(Rhinojs)不是主流的浏览器支持的,故对js支持的不够好 | 包含少量js的页面测试 |
PhantomJS | 速度中等、模拟行为接近真实 | 不能模拟不同/特定浏览器的行为 | 非GUI的功能性测试 |
总结:
如果你要测试的页面js不是很多,并且不需要做兼容性测试的话,HtmlUnitDriver无遗是最好的选择
如果你需要做兼容性测试的话,还是应该选择真实的浏览器driver(如果你想提高自动化运行速率,可以考虑用testng,selenium grid并行测试)
I. 问题
老高最近遇到一个需求,linux\centos下,使用selenium技术抓取数据。本来很简单的问题,但是由于内存限制,安装X window不现实,所以一个BT的想法诞生了,是否可以在centos命令行界面运行一个虚拟的桌面,然后使用selenium控制Firefox浏览 器完成一些操作,Firefox运行在虚拟的桌面中,一切操作都在命令行中完成。
Google之,发现了Xvfb,他可以新建一个虚拟的X窗口,再配合python的pyvirtualdisplay,简直就是神器!
II. 安装
centos下:
# 安装Xvfb和pyvirtualdisplay
yum install xorg-x11-server-Xvfb
pip install pyvirtualdisplay
安装firefox和selenium
yum install firefox
pip install selenium
III. 代码
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
参考网站:
http://selenium-python.readthedocs.org/en/latest/getting-started.html
http://nullege.com/codes/search/selenium.webdriver.Remote.find_elements_by_class_name
http://www.opsview.com/forum/opsview-core/how-do-i/how-do-i-install-selenium-centos-server
https://gist.github.com/textarcana/5855427
http://scraping.pro/use-headless-firefox-scraping-linux/
http://serverfault.com/questions/363827/how-can-i-run-firefox-on-centos-with-no-display
https://realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/
https://pypi.python.org/pypi/selenium
http://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/
http://www.cnblogs.com/fnng/p/3230768.html
http://www.cnblogs.com/fnng/p/3157639.html
http://www.cnblogs.com/fnng/p/3157639.html
最新文章
- DIV+CSS 清除浮动方法总结
- 配置Java开发IDE
- 关于Python的数据分析工具
- JMS发布/订阅消息传送例子
- BZOJ4542: [Hnoi2016]大数
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web
- mysql中的unsigned
- oracle 共享池( shared pool )
- Software caused connection abort: socket write error
- PowerDesigner英文字段转换中文字段显示
- Entity Framework(一) 映射
- Linux安装包
- QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)
- crontab中使用mysql问题
- 谷歌浏览器javascript调试教程
- TLS/SSL
- 详解vue的数据binding原理
- windows多线程同步--信号量
- Java基础语法(基本语句)
- c# 编译期常量const和运行时常量readonly
热门文章
- Cocos2d-x3.0模版容器具体解释之二:cocos2d::Map&;lt;K,V&;gt;
- SharePoint2010 部署步骤“激活功能”中出现错误:无法启动计算机“PCName”上的服务SPUserCodeV4
- 跨平台编程中的宏定义(__LINE__和__DATE__极其有用)
- perl eval
- 基于visual Studio2013解决C语言竞赛题之1051数的顺序
- tar打包过滤某个文件及文件夹
- 在github 网页上,删除已经建好的库
- InitInheritedComponent的执行过程
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
- SMART rule之个人理解