Linux+Python+Selenium Grid构建可视化分布式自动化测试环境

640?wx_fmt=png


作者 | 吴成   来源 | python爬虫人工智能大数据(ID:pylearn)


我们在做爬虫,或者自动化测试的时候,经常需要用到Selenium,这个框架大家也都不陌生,相信用过的朋友, 大部分肯定都知道在Windows下不管做UI自动化测试还是做爬虫元素提取,都是非常方便的,比如看下面的代码,是一个最基本的在Windows下操控Chrome浏览器打开网页的代码


 
 问题来了,这段代码假如我放到我的Linux服务器上,是否还能够正常打开我Windows电脑的Chrome浏览器并打开网页? 
  
 
想想也很容易明白,肯定控制不了Windows电脑,更不用说浏览器网页了,那如果我的脚本放服务器想跑的话,第一种解决方案就是用无头浏览器,这个不多说,导入无头浏览器相关的包就行,可以实现无界面操作,不过我这里提两个需求,看大家是否知道有什么解决方案:


需求一:Linux下跑自动化脚本,想在Windows看带界面的执行过程,该怎么做?
需求二:假如我有一个需要做UI自动化测试的模块,自动化测试脚本也放在Linux上,并且这个模块会由多个测试人员来进行测试,那么我服务器的脚本如何能根据不同测试人员的电脑Ip来控制他们Windows下的Chrome浏览器?


通过这两个需求,引申出来今天给大家分享的技术知识
首先看一幅草图,想实现上面的两个需求,下面的图形要先看明白,其实也很直观,Linux的hub管理中心,发送驱动指令到对应的IP,去找对应Ip的电脑上的Chrome驱动(node) 去打开浏览器,进行自动化操作


640?wx_fmt=jpeg


这样的控制流程通过什么技术实现?


答案:Selenium Grid


Selenium Ggrid可以同时在不同机器上测试不同浏览器,包含一个hub和多个node。node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息,同时hub会接受到即将被执行的测试用例及其相关信息,并通过这些信息自动选择可用的且符合浏览器与平台搭配要求的node,node被选中后,测试用例所调用的selenium命令就会被发送到hub,hub再将这些命令发送到指定给该测试用例的node,之后由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包放同一目录!!!(这地方踩过坑,格外注意)
640?wx_fmt=jpeg
以上基本环境配置好后,我们开始执行命令启动服务
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
640?wx_fmt=jpeg 好了,当我们把繁琐的环境配置好后,并且hub和node命令也都开启并成功建立了连接,我们就可以编写脚本代码了,下方是脚本代码,在本地我们之前用webdriver.Chrome即可,现在在服务器上,我们通过webdriver.Remote来创建driver对象,执行这个python文件,即可打开Windows的Chrome浏览器。

总结
selenium grid通过上述方式即可实现文章开头所说的两个需求,Linux脚本控制Windows浏览器,以及根据不同的IP,控制不同的Windows下的浏览器,另外你在测试过程中,肯定还会遇到很多问题,这是学习新知识的必经阶段,欢迎留言探讨。


(*本文为 Python大本营转载文章,转载请联系原作者


社群福利

扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周 一、三、五更新技术福利,还有不定期的抽奖活动~ 640?wx_fmt=jpeg



AI 开发者大会「七夕」福利



仅限今日!2019 AI开发者大会「七夕」限时双人特惠票抢购中~是不是和男(女)朋友购票不重要啦,两人组队即享优惠~


目前大会重磅嘉宾更新中: 阿里、华为、Google Brain、Amazon、微软中国、百度、京东、小米、快手、科大讯飞、商汤、旷视、图森、云知声、思必驰... “硬核AI技术大会,一年参加一次就够了”。扫码查看 更多嘉宾和大会信息。 640?wx_fmt=png 推荐阅读:


640?wx_fmt=png 你点的每个“在看”,我都认真当成了喜欢
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值