selenium远程自动UI测试

1584 篇文章 73 订阅
1439 篇文章 115 订阅

背景

上一篇文章介绍了直接使用chrome headless模式进行测试的方法.这篇文章介绍一下使用selenium grid配合ssh port forward进行测试的方法.

在headless模式下,测试过程中看不到浏览器的UI页面,如果整个测试element定位没有问题,基本跑起来不会出错.但是如果有问题,那么因为看不到UI,会导致无法快速定位原因,此时有两个方法:

1.在启动headless模式的时候,将remote debug打开.在本地打开一个浏览器,连接到headless chrome的debug端口. 这个在后面的文章介绍.

2.通过selenium grid,让python代码跑在服务器上,chromedriver和chrome使用本地PC的,可以在本地的Chrome浏览器中看到整个测试过程.

使用ssh打通pc和remote的通道

一般远程情况如下图. 我们的PC可以直接登录,或者透过跳板机登录到远程remote服务器上.要测试的UI界面在remote服务器上才可以访问.
在这里插入图片描述
先从openssh官网下载最新的window sssh包.到selenium官网下载最新的selenium-server jar包.本地PC和remote服务器上都安装好Java8.
在这里插入图片描述
然后编辑ssh配置文件ssh_config如下

#本地的ssh需要的配置文件 Host remote # 这部分不需要修改 StrictHostKeyChecking no UserKnownHostsFile myhost ServerAliveCountMax 4 ServerAliveInterval 10
TCPKeepAlive yes # 这部分需要修改,是从PC机器登陆到remote机器的方法 # remote机器的用户 User
root # remote机器的IP Hostname 192.168.56.101 # remote机器的端口 Port 22 #
如果从PC机到remote需要经过跳板机,那么这儿把跳板机的信息填出来 # 否则直接注释了就可以了 #ProxyJump
root@10.0.0.1:22 # 在remote机器上启动一个hub,使用的端口需要被确定出来,比如 # java -jar
selenium-server-standalone-3.141.59.jar -role hub -port 54444 #
在PC上启动node的时候,连接自己的54444端口的时候,被forward到连接remote机器的54444端口 #
这个大部分情况不需要修改,如果要修改,两个端口保持一致,都是remote机器上启动hub使用的端口 LocalForward 54444
127.0.0.1:54444 # PC上启动一个node,需要在PC上开启127.0.0.1:54445. # 当hub需要一个webdriver来进行测试的时候,会连接127.0.0.1:54445 # 被转发到PC的54445端口 # java
-jar selenium-server-standalone-3.141.59.jar -role node -host 127.0.0.1 -port 54445 -hub http://127.0.0.1:54444/grid/register # 这个大部分情况下不需要修改,如果要修改,两个端口保持一致,会在PC机上启动这个端口 RemoteForward 54445
127.0.0.1:54445 # PC上的chrome启动的时候,需要有一个socks5动态代理,这样才能正常登陆需要测试的UI # 如果网络不是直达的,需要给出来 DynamicForward 54448

然后启动到remote的连接,连接好了之后保持这个窗口不关闭.
在这里插入图片描述
此时能看到本地的54444端口开启了,当在PC机上连接54444端口的时候,相当于连接remote的54444端口.同时remote的54445端口开启了,当在remote上连接54445端口是,相当于连接pc机的54445端口.
在这里插入图片描述
在这里插入图片描述
在remote上启动hub

java -jar selenium-server-standalone-3.141.59.jar -role hub -port
54444

在这里插入图片描述
在pc上启动node

java -jar selenium-server-standalone-3.141.59.jar -role node -host 127.0.0.1 -port 54445 -hub http://127.0.0.1:54444/grid/register

能从hub和node的日志看到两者连接好了.
在这里插入图片描述

使用Remote进行测试

在remote中使用如下代码进行测试.注意driver是Remote类型的,chromeOptions是本地PC打开浏览器使用的选项,这儿只是给了一个Proxy选项,不会给headless之类的了.

import logging
from datetime import datetimefrom selenium import webdriverlogging.basicConfig()logging.getLogger().setLevel(logging.DEBUG)chromeOptions = webdriver.ChromeOptions()chromeOptions.add_argument(f"–proxy-server=socks5://127.0.0.1:54448")driver = webdriver.Remote(command_executor=f"http://127.0.0.1:54444/wd/hub", desired_capabilities=chromeOptions.to_capabilities())driver.maximize_window()driver.get(“http://www.baidu.com”)_now = datetime.now().strftime(‘%Y%m%d-%H%M%S’)driver.save_screenshot(f’baidu-{_now}.png’)driver.quit()

测试过程中可以看到PC上打开了一个受控制的chrome浏览器,然后先被最大化,然后访问了baidu,然后被截图,最后浏览器被关闭.
在这里插入图片描述
在remote上可以看到截图的Png文件
在这里插入图片描述
截图如下.
在这里插入图片描述

学习资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
在这里插入图片描述
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值