zalenium 应用
zalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格。它使用docker-selenium在本地运行Firefox和Chrome中的测试,如果需要不同的浏览器,你的测试可以重定向到云测试提供商(Sauce Labs,BrowserStack,TestingBot)。 Zalenium也可以在Kubernetes中使用。
繁杂的问题:
- 有一个稳定的网格来运行Selenium的UI测试
- 随着时间的推移保持它(跟上新的浏览器,Selenium和驱动程序版本)
- 提供涵盖所有浏览器和平台的功能
这就是为什么开发zalenium的原因,在需求中创建了docker-selenium节点。在Firefox和Chrome中进行的UI测试将运行得更快,因为它们在本地网格上运行,在从头开始创建并在测试完成后处理的节点上运行。
如果需要docker-selenium无法实现的功能,测试会重定向到云测试提供程序(Sauce Labs,BrowserStack,TestingBot)。
Zalenium的主要目标是:允许任何人拥有一次性和灵活的Selenium Grid基础设施。
### zalenium的由来
由Zalando和Selenium两个单词组成。如前所述,这个项目的目的是提供一个简单的方法来创建一个Grid,并服务于Selenium社区。不过,这不是一个正式的Selenium项目。
注:Zalando只是一个电商平台。Zalenium由该平台的研发团队开发与维护。
### 安装
如果你从未安装和使用过Docker ,请参考 Docker教程
1、安装Docker Engin,版本 > = 1.11.1(可能适用于早期版本,尚未测试)。
2、docker daemon 正在运行(例如,docker info可以正常工作)。
3、拉取 docker-selenium镜像。
$ sudo docker pull elgalu/selenium
注:这里拉取的是非官方的docker-selenium镜像。
4、拉取zalenium镜像。
$ sudo docker pull dosel/zalenium
速度太慢,可以使用国内镜像:
https://www.docker-cn.com/registry-mirror
查看镜像:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elgalu/selenium latest 9d39de56e57b 3 days ago 1.4GB
dosel/zalenium latest e5a39a962b2c 8 days ago 746MB
### 运行
Zalenium使用docker来按需扩展,因此我们需要为docker.sock提供完全的访问权限,这就是所谓的“Docker alongside docker”。
docker run --rm -ti --name zalenium -p 4444:4444 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/videos:/home/seluser/videos \
--privileged dosel/zalenium start
--privileged 为可选项,建议运行zalenium的privileged参数,通过Haveged增加熵(entropy)水平节点注册过程的速度。因为它可以提高性能。
准备测试脚本
grid_demo.py
from selenium import webdriver
from time import sleep
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={'browserName': 'chrome'})
driver.get('https://www.baidu.com')
driver.find_element_by_id("kw").send_keys("docker selenium")
driver.find_element_by_id("su").click()
sleep(1)
driver.quit()
现在可以运行测试了,通过 http://localhost:4444/wd/hub 主节点。
$ python3 grid_demo.py
### 附加属性
相比于官方的docker-selenium,zalenium最直观的感受的就在此处。
通过浏览器后台执行Selenium总有一种不安全的感觉,zalenium可以将脚本的执行录制成视频,供你回放观看。不过,我这里提示:“没有找到支持的视频格式和MIME类型”也许是因为我的Ubuntu没有安装视频播放器。好在还有Logs可以查看。
视频录制,默认在/tmp/videos文件夹可以找到保存的视频。
当运行测试脚本的过程中,可以通过该页面观看脚本的执行过程,这功能还是666的。
更多用法:
https://zalando.github.io/zalenium/#usage
zalenium 应用的更多相关文章
- 自动化测试平台环境docker部署
参考资料:testin云测 https://www.testin.cn接口自动化测试平台:http://120.79.232.23星云测试 http://www.threadingtest.com腾讯 ...
- Python自动化测试面试题-Selenium篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- selenium 4.0 发布
我们非常高兴地宣布Selenium 4的发布.这适用于Java..net.Python.Ruby和Javascript.你可以从你最喜欢的包管理器或GitHub下载它! https://github. ...
随机推荐
- 2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
Pokémon GO Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
- hihoCoder #1038 : 01背包(板子题)
#1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...
- [51nod1709]复杂度分析
给出一棵n个点的树(以1号点为根),定义dep[i]为点i到根路径上点的个数.众所周知,树上最近公共祖先问题可以用倍增算法解决.现在我们需要算出这个算法精确的复杂度.我们定义计算点i和点j最近公共组先 ...
- float浮动属性的基本常识
CSS 浮动 请看下图,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘: 再请看下图,当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边 ...
- java与C++变量初始化的对比
java尽力保证:所有变量在使用前都能得到恰当的初始化 ①函数/方法局部变量的初始化 在C/C++中,变量的初始化还是得依赖于程序员的自觉性.对于函数局部变量,编译器不会为基本类型赋予默认初始值,新手 ...
- js根据出生年月日换算年龄
function age_Conversion(date) { debugger var age = ''; var str = date.replace(/年|月/g, "-") ...
- jquery的done和then区别
jquery的deferred对象的done方法和then方法都能实现链式调用,但是他们的作用是有区别的,then方法中如果你传递的方法有返回值,那么他会传递给下一个链式调用的方法.而done方法与此 ...
- 用IDEA/WebStrom 提交本地项目到Git/码云等
以码云为例: 在码云上创建新的项目. webstrom/idea 打开本地项目
- MySQL查询性能优化一则
公司有一套Web系统, 使用方反馈系统某些页面访问速度缓慢, 用户体验很差, 并且偶尔还会出现HTTP 502错误. 这是典型的服务器端IO阻塞引发的问题,通过对访问页面的程序逻辑进行跟踪,发现问题应 ...