docker+python+selenium grid 4+alluer实现UI 自动化(安装教程 一 )

准备

  • java 11 https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html
  • selenium grid4
  • chromedriver[106] https://chromedriver.chromium.org/downloads
  • python
  • selenium
  • docker
  • allure
  • selenium-server-4.5.3.jar https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.6.0

1. selenium grid4 安装

Ⅰ 快速入门阶段

前提是一定要下载个 selenium 三件套,如果连三件套都不知道是什么就自行百度,谢谢
官方文档: https://www.selenium.dev/documentation/grid/getting_started/

将浏览器驱动 chromedriver.exeselenium-server-4.5.3.jar 下载完成后,放置到一个文件夹,使用下面命令进行启动

  1. 默认端口: java -jar selenium-server-<version>.jar standalone

  2. 自定义端口:java -jar selenium-server-<version>.jar standalone --port 5555
    在这里插入图片描述

  3. http://localhost:4444 进行登录
    这个就是启动成功的图片
    在这里插入图片描述
    怎么让有会话呢,直接写代码

以下是 这是官方代码的,要进行更改的

from selenium import webdriver

firefox_options = webdriver.FirefoxOptions()
driver = webdriver.Remote(
    command_executor='http://www.example.com', // 这个URL 要改成你的selenium 监控地址
    options=firefox_options
)
driver.get("http://www.google.com")
driver.quit() 

这是我的代码

from selenium import  webdriver
import  time
chrom_options = webdriver.ChromeOptions()
driver= webdriver.Remote(
    command_executor="http://192.168.1.6:4444", //这边是更改后的代码
    options=chrom_options
)
driver.get("http://www.baidu.com")
time.sleep(222222)
driver.quit()

成功标志如下,到这里说明最简单的已经成功了
在这里插入图片描述
在这里插入图片描述

2. grid 一共有4中方式

第一种方式: 独立,node和hub 在一台电脑上

适用范围:

  • 使用本地开发或调试测试RemoteWebDriver
  • 推送代码前运行快速测试套件
  • 在CI/CD中设置一个易于的网格
先配置jenkins 进行测试,后面都会用
  • jenkins 安装插件 selenium 和selenium Capability Axis
    在这里插入图片描述
第二步,选择系统配置

在这里插入图片描述

默认就行了

在这里插入图片描述

新建任务

在这里插入图片描述

点击保存,到任务中心点击运行即可

在这里插入图片描述

第二种方式: 中心和节点

说明:

  • 最常用
  • 不同的机器组合在一起
  • 具备单个入口,在不同环境运行测试
  • 不破坏网络情况下扩展和减少容量
HUB的组成:路由,分发服务器,会话映射、新建会话队列和事件总线
启动hub(同一台计算机)
java -jar selenium-server-<version>.jar hub
启动node
节点1
java -jar selenium-server-<version>.jar node --port 5555
节点2
java -jar selenium-server-<version>.jar node --port 6666

如下
在这里插入图片描述

启动hub(不同计算机)PS:两台计算能ping 同

默认端口 4444, 后台登陆地址:ip:4444
A机器作为hubjava -jar selenium-server-4.5.3.jar hub
B机器作为node java -jar selenium-server-4.5.3.jar node --hub http:// A机器的IP:4444

不是默认端口, 后台登陆地址:ip:6666
A机器作为hub java -jar selenium-server-4.5.3.jar hub --port 6666
B机器作为node java -jar selenium-server-4.5.3.jar node --hub http:// A机器的IP:4444

3.使用docker 进行操作

把头三个下载到docker 里面
第一个是服务+hub 第二个是hub 第三个是节点

关于standalone 和hub

关于selenium/standalone-chrome 和selnium/hub 的区别,个人理解在于,前者已经集成了hub,就不用在启动hub了,在docker standalone 和hub 是不能一起启动的,启动就报错了

如果想进行多线程操作,就需要对运行几个node 代码如下:
建议改下 --name 的名字 好区分

docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442  -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 --name mynode1 selenium/node-chrome

在这里插入图片描述

在这里插入图片描述
第一个启动方式如下:
直接本地IP:4444 就能打开

docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-chrome
测试代码

有的网上用的是这个参数 desired_capabilities 运行时会进行提示的,报错内容如下

 DeprecationWarning: desired_capabilities has been deprecated, please 
pass in an Options object with options kwarg
意思就是   这个 desired_capabilities  东西不用了,废弃了,请用  options 这个参数好不好
@allure.title('分布式启动')
@pytest.fixture(scope='session', name='grid_edge')
def grid_edge():
    global driver
    selenium_grid_url = "http://192.168.3.202:4444/wd/hub"
    # CHROME = {"browserName": "chrome"}
    edge_options = webdriver.ChromeOptions()
    driver = webdriver.Remote(options=edge_options,
                              command_executor=selenium_grid_url)
vnc 密码:

可以使用vnc 查看过程,前提是程序在运行,他的密码是secret

docker run -d --net grid -e SE_EVENT_BUS_HOST =selenium-hub \ 
    --shm-size= " 2g " \ 
    -e SE_EVENT_BUS_PUBLISH_PORT=4442 \ 
    -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \ 
   --name selenium-node-chrme1 selenium/node-chrome

``加粗样式`
https://github.com/SeleniumHQ/docker-selenium



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值