需求定义
- 公司需要对外展示若干web页面,需要一种能够自动在屏幕上循环播放这些web页面的功能;
- web页面上的按钮和各种功能点也要能够自动点击和展示;
- 现在有三种方案:用js实现、用制作视频的方式实现、用录屏的方式实现;
- 第一种方案理论上可以实现,但是如果一个页面上的功能点过多,编写js代码就显得非常繁杂,而且一旦页面的元素、控件等有所改动就需要修改代码;
- 第二种方案可能会存在视频不清晰、分辨率不高的缺点,同样,一旦系统有所变化,就需要重新录制,比较麻烦;
- 第三种方案也没有能够避免第二种方案的缺陷;
- 经过认真上网查询,我最终选择了用selenium来完成这件事;
为什么是selenium
- selenium原本是一种网页自动化测试工具,可以实现自动测试网页功能和性能;
- 这里,我们只用它的”网页动作”录制的功能来实现轮播效果;
- selenium和selenium IDE均可直接安装在firefox上面,非常方便;
- selenium支持多种浏览器播放录制的网页动作,官网上面可下载所需的浏览器驱动,浏览器支持性较强;
- selenium支持各种常用语言,比如java、javascript(需要安装node)、C#、Python、Ruby,让你用最擅长的语言随心所欲操控网页;
- 以java语言为例,selenium最终的录制脚本可以导出成jar包,无论是linux还是windows,只要机器上安装了java,你就可以运行jar包、开启轮播,没有比这更方便的啦!
- 下面,我就带您用selenium一步一步实现轮播;
下载Selenium
- 下载selenium插件
- 目前,只有firefox支持selenium插件,不知道以后会不会跨浏览器支持;
- 打开firefox,搜索插件selenium,安装插件;
- 安装完后,可以看到firefox的功能列表中已经多了selenium啦!
- 但此时启动selenium还不能够使用,这是因为我们尚未安装selenium IDE;
- 安装Selenium IDE
- 用firefox打开selenium官网,下载selenium IDE:点击这里下载;
- selenium IDE将直接以插件形式安装在firefox上面;
Selenium IDE使用
- 使用Selenium IDE来录制网页动作的方法十分简单,打开selenium后,点击红色的圆点即可开始录制,再次点击即停止录制,点击run按钮可以以设定好的速率播放相应脚本的动作,还能够将另存为脚本或者将脚本导出成为java/Ruby/Python等;
- 如果需要查询更复杂的功能,请看这里
实现轮播
- 确保您的机器安装了java;
- 打开eclipse,新建一个工程;
- 在这里的Selenium Standalone Server一栏下载selenium依赖jar包,我下载的是
selenium-server-standalone-2.48.2.jar
; - 将上述jar包导入eclipse新建的工程中,注意不要仅仅是复制进eclipse呦,还需要在工程右键build path>library>add jars将jar包真正添加进工程中;
- 然后,我们就可以开始录制脚本啦;
- 打开Selenium插件,点击红色圆形按钮开始录制;
- 在浏览器操作一遍需要录制的动作,比如进入URL、点击按钮、选择下拉菜单等等;
- 注意在录制前将所需的用户名和密码填写好并保存,否则在录制过程中还要填写用户名密码,这样会使得轮播的展示效果变差;
- 录制完后,点击
文件>export test case as java/JUnit4/webDriver
,将脚本导出为JUnit; - 然后我们就该处理脚本了:
- 将脚本复制进ecplise中;
- 如果您使用的不是firefox来进行轮播,则将
driver = new FirefoxDriver();
改为driver = new ChromeDriver();
就可以来,注意要引入外部包; - 可以加入诸如for循环或者while(true)之类的语句,保证脚本可以自动无限次循环播放;
- 可以加入诸如
Thread.sleep(3000);
的语句来实现每个动作之间的时间驻留; - 对于具体的网页动作,也可根据代码进行必要的修改;
- 需要注意的是,如果您使用的不是firefox来进行轮播,那么还需要下载您使用的浏览器的驱动才行,否则Selenium在启动浏览器时找不到相应的驱动会报错,各大浏览器的驱动在这里下载,linux版本的chrome驱动请在这里下载,chrome驱动版本和chrome版本的对应关系在这里查询;
- 下载完驱动后,您还需要在程序中指明驱动存放位置,即添加下述代码:
1 | System.setProperty("webdriver.chrome.driver", "D:\\chromedriver_win32\\chromedriver.exe"); |
脚本录制大功告成,下面我们可以试着播放脚本,看看效果如何:
- 将上面工程导出为jar包;
- 用
java -jar jar包名称
运行jar包; - 此时,Selenium将自动为您开启浏览器,并播放刚才录制的网页动作,是不是非常方便!
需要注意的是,在linux上面运行脚本,需要对chrome驱动赋予执行权限:
1 | chmod +x chromedriver |
进一步优化
- 实现了录制和播放脚本还不够,我们要让整个轮播的过程更加优雅!
- 可以添加下面的代码,实现浏览器自动全屏播放,是不是很炫!
1 | // full screen automatic |
- 如果您用的是windows系统,可直接将运行jar包的命令放在.bat文件中,这样如果有人来公司参观,直接双击.bat文件就能够实现轮播了,相当方便;
- 如果您用的是linux系统,可以写一个shell脚本实现上述功能:
1 | #!/bin/sh |
- 您还可以写一个.desktop文件,即桌面图标文件,链接到上面的shell脚本,这样双击桌面图标就能开启轮播功能!
1 | #!/usr/bin/env xdg-open |
- 现在我们完整的实现了整个轮播效果,我准备把它部署在公司门口的显示屏上,让每一个路过的人都能看到公司的产品展示!