想想也很容易明白,肯定控制不了Windows电脑,更不用说浏览器网页了,那如果我的脚本放服务器想跑的话,第一种解决方案就是用无头浏览器,这个不多说,导入无头浏览器相关的包就行,可以实现无界面操作,不过我这里提两个需求,看大家是否知道有什么解决方案:
需求二:假如我有一个需要做UI自动化测试的模块,自动化测试脚本也放在Linux上,并且这个模块会由多个测试人员来进行测试,那么我服务器的脚本如何能根据不同测试人员的电脑Ip来控制他们Windows下的Chrome浏览器?
首先看一幅草图,想实现上面的两个需求,下面的图形要先看明白,其实也很直观,Linux的hub管理中心,发送驱动指令到对应的IP,去找对应Ip的电脑上的Chrome驱动(node) 去打开浏览器,进行自动化操作
环境配置:
Linux: 1、jdk 1.8+ 2、selenium-server-standalone-3.8.1.jar 3、selenium 3版本
Windows: 1、jdk 1.8+
2、selenium-server-standalone-3.8.1.jar 3、selenium 3版本
注意事项: 1、selenium-server-standalone版本一定要和selenium版本匹配,必须都是3版本或者都是2版本,不能一个2一个3, 2、chromedriver和jar包放同一目录!!!(这地方踩过坑,格外注意)
以上基本环境配置好后,我们开始执行命令启动服务
1、首先启动Linux服务器上的selenium grid服务,需要切换到selenium-server-standalone-3.81.jar所在目录
java -jar selenium-server-standalone-3.8.1.jar -role hub -port 4455
这里Hub端开启了4455端口,用来接收node连接信息,启动成功提示: Registered a node http://10.21.104.88:4455
2、切换到Windows里面的selenium-server-standalone-v3.0.1.jar所在目录
java -jar selenium-server-standalone-3.8.1.jar -role node -port 4455 -hub http://10.21.104.88:4455/grid/register(ip为Linux服务器ip)
启动成功提示:The node is registered to the hub and ready to use
连接成功的话浏览器打开:http://10.21.104.88:4455/grid/console
可以查看连接hub的node信息,有浏览器版本号,表明连接成功,我这里有两台电脑都连了hub
好了,当我们把繁琐的环境配置好后,并且hub和node命令也都开启并成功建立了连接,我们就可以编写脚本代码了,下方是脚本代码,在本地我们之前用webdriver.Chrome即可,现在在服务器上,我们通过webdriver.Remote来创建driver对象,执行这个python文件,即可打开Windows的Chrome浏览器。
总结
selenium grid通过上述方式即可实现文章开头所说的两个需求,Linux脚本控制Windows浏览器,以及根据不同的IP,控制不同的Windows下的浏览器,另外你在测试过程中,肯定还会遇到很多问题,这是学习新知识的必经阶段,欢迎留言探讨。
社群福利
扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周 一、三、五更新技术福利,还有不定期的抽奖活动~◆
AI 开发者大会「七夕」福利
◆
仅限今日!2019 AI开发者大会「七夕」限时双人特惠票抢购中~是不是和男(女)朋友购票不重要啦,两人组队即享优惠~