搭建测试环境_搭建测试环境是学习测试的关键,大家没意见吧!

a38fa65df81197890c4cc2a1fb005753.gif

0 1

Selenium 相关镜像

·selenium/hub

·selenium/node-chrome、selenium/node-chrome-debug

·selenium/node-firefox、selenium/node-firefox-debug

0 2

环境搭建

2.1. 启动 Selenium 相关容器

# 运行主节点 hubdocker run -d -p 4444:4444 --name=hub selenium/hub # 运行 node 节点 chrome,注册到 hub 节点上docker run -d -p 5901:5900 --name=chrome --link=hub selenium/node-chrome docker run -d -p 5902:5900 --name=firefox --link=hub selenium/node-firefox# selenium/node-chrome 和 selenium/node-chrome-debug 的区别在于 debug 容器带有 VNC 服务端,可方便观看执行步骤docker run -d -p 5901:5900 --name=chrome --link=hub selenium/node-chrome-debugdocker run -d -p 5902:5900 --name=firefox --link=hub selenium/node-firefox-debug

启动后使用 Docker PS 查看运行中的容器

b2cedd1ae55a9f892d037029ca69700c.png

Node 节点注册成功后,可以在 hub-console 查看节点注册情况,地址为 Docker 主机 IP + Hub 主节点映射的端口号组成,如:http://localhost:4444/grid/console

f61a36da9c7eab745b542cf5f39ec255.png

2.2 执行测试

启动容器后,编写一条简单的测试用例在,可以看到使用 FireFox 浏览器驱动的测试将会自动分配到 node-firefox-debug 节点上执行:

from selenium import webdriverfrom selenium.webdriver import DesiredCapabilitiesdef test_demo():    driver = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)    driver.get("https://www.baidu.com")    driver.find_element_by_id("kw").send_keys("test")    time.sleep(2)    driver.find_element_by_id("su").click()    time.sleep(2)    driver.quit()

2.3 使用 VNC 查看执行过程

下载并安装 VNC Viewer,连接 node-firefox-debug 实例来查看实际运行效果,方便调试,连接成功后直接运行测试即可看到实际运行效果。

注:VNC Viewer 默认登录密码为 secret

下载地址:https://www.realvnc.com/en/connect/download/viewer/

2817d2665540df9d809bd9092111f30d.png

0 3

使用 Docker Compose 快速创建 Web 测试环境

使用 Docker Run 启动容器相对来说也比较麻烦,我们可以使用 Compose 来做进一步的优化,快速创建 web 测试环境。

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

3.1 编写 docker-compose.yml 文件

示例:

hub:  image: selenium/hub  ports:    - 4444:4444firefox:  image: selenium/node-firefox-debug  ports:    - 5901:5900  links:    - hubchrome:  image: selenium/node-chrome-debug  ports:    - 5902:5900  links:    - hub

3.2 启动并运行整个应用程序

执行 docker-compose up 命令来,也可以使用 docker-compose up -d 后台启动;

如果是在 docker-compose.yml 文件目录下执行命令则无需指定文件。

356abf5f5e3b1e42f7d2edd5097c18ba.png

3.3 执行测试脚本

from selenium import webdriverfrom selenium.webdriver import DesiredCapabilitiesdriver = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("测试")time.sleep(2)driver.find_element_by_id("su").click()time.sleep(2)driver.quit()
0 4

Selenium 搭配 Python 多线程执行分布式测试

配合 Docker 启动的容器执行以下测试代码,可以看到将会同时在 FireFox、Chrome 执行测试

示例代码:

import timefrom selenium.webdriver import DesiredCapabilitiesfrom threading import Threadfrom selenium import webdriverfrom time import ctime# 定义分布式运行环境caps = [{"host":"http://localhost:4444/wd/hub", "browser": DesiredCapabilities.FIREFOX},        {"host":"http://localhost:4444/wd/hub", "browser": DesiredCapabilities.CHROME}]def test_baidu(host, browser):    driver = webdriver.Remote(command_executor=host, desired_capabilities=browser)    driver.get('http://www.baidu.com')    driver.find_element_by_id('kw').send_keys("测试")    driver.find_element_by_id('su').click()    time.sleep(2)    driver.quit()if __name__ == '__main__':    print(f'start: {ctime()}:')    threads = []    # 创建线程    for cap in caps:        t = Thread(target=test_baidu, args=(cap.get("host"), cap.get("browser")))        threads.append(t)    # 启动线程    for t in threads:        t.start()    for t in threads:        t.join()    print(f'end: {ctime()}:')
4aa0b2bf8f4d5f0b1d0d597633d20753.gif

b56fcc4878c3959df6f65b0c4107544c.png

链接:https://www.cnblogs.com/sharef/p/13651216.html

本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除

推荐阅读

点击阅读☞一文搞定!那些Selenium常见的元素定位

点击阅读☞切换窗口时,用Selenium定位元素超方便

点击阅读☞用Selenium通过豆瓣的滑动验证码,超简单!

点击阅读☞Selenium那些值得再次巩固的知识

点击阅读☞元素定位只会用Selenium?也太落后了吧!

256f8cdf18a7230b19da22b5d0129da3.gif

e6e6fec8d74ca46254299f4e40328f96.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值