示例python代码remote_webdriver.py
如下:
# coding=utf-8
import time
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
@pytest.fixture
def init_driver():
hub_url = "http://192.168.10.100:4444/wd/hub"
# 定义要使用的浏览器和版本
capabilities = {
'browserName': 'chrome', # 指定浏览器
'version': '125.0', # 指定版本(latest代表最新版本)
}
# 创建远程 WebDriver 实例
driver = webdriver.Remote(command_executor=hub_url, desired_capabilities=capabilities)
yield driver
driver.quit()
def test_001(init_driver):
init_driver.get("http://wwww.baidu.com")
init_driver.find_element(By.ID,'kw').send_keys("柠檬班001")
time.sleep(5)
def test_002(init_driver):
init_driver.get("http://wwww.baidu.com")
init_driver.find_element(By.ID,'kw').send_keys("柠檬班002")
time.sleep(5)
def test_003(init_driver):
init_driver.get("http://wwww.baidu.com")
init_driver.find_element(By.ID,'kw').send_keys("柠檬班003")
time.sleep(5)
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
在控制台中执行命令:
pytest remote_webdriver.py -s -v -n 3
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
pytest-xdist只需要指定-n参数即可设置并发数,-s、-v参数可以让控制台日志更加详细
控制台输出如下:
====================================================================== test session starts ======================================================================
platform win32 -- Python 3.8.8, pytest-6.2.4, py-1.11.0, pluggy-0.13.1 -- c:\python\python38\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.8.8', 'Platform': 'Windows-10-10.0.19041-SP0', 'Packages': {'pytest': '6.2.4', 'pluggy': '0.13.1'}, 'Plugins': {'allure-pytest': '2.13.2',
'Faker': '19.6.0', 'assume': '2.4.3', 'html': '3.1.1', 'metadata': '2.0.4', 'repeat': '0.9.1', 'xdist': '3.3.1'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0
_251
rootdir: D:\workspace_pycharm\study\web
plugins: allure-pytest-2.13.2, Faker-19.6.0, assume-2.4.3, html-3.1.1, metadata-2.0.4, repeat-0.9.1, xdist-3.3.1
3 workers [3 items]
scheduling tests via LoadScheduling
remote_webdriver.py::test_003
remote_webdriver.py::test_001
remote_webdriver.py::test_002
[gw0] PASSED remote_webdriver.py::test_003
================================================================ 3 passed, 30 warnings in 20.04s ================================================================
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
通过VNC可以看到node节点中同时打开了三个chrome浏览器(其中一个浏览器的页面被遮挡住了)

Java并行执行测试
如果采用的是Java语言,可以使用TestNG测试框架的parallel机制,通过配置xml文件即可非常简单的实现并行测试
"1.0" encoding="utf-8" ?>
suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="测试套件" parallel="tests" thread-count="3">
<test name="test01">
<classes>
<class name="com.testcases.LoginTest"/>
</classes>
</test>
<test name="test02">
<classes>
<class name="com.testcases.RegisterTest"/>
</classes>
</test>
<test name="test02">
<classes>
<class name="com.testcases.SearchTest"/>
</classes>
</test>
</suite>
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
@BeforeTest
public void setup(String browserName){
// 配置对象
DesiredCapabilities capabilities = new DesiredCapabilities();
// 配置测试的浏览器
capabilities.setBrowserName("chrome");
capabilities.setVersion("125.0");
String hubUrl = "http://192.168.10.100:4444/wd/hub";
try {
driver = new RemoteWebDriver(new URL(hubUrl), capabilities);
} catch (MalformedURLException e) {
e.printStackTrace();
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
拉取指定浏览器版本node节点
有些时候我们不需要使用最新版本的浏览器容器环境,想要指定对应版本的浏览器
我们可以查询docker仓库镜像的tag
https://hub.docker.com/r/selenium/node-chrome/tags

docker pull selenium/node-chrome:120.0-chromedriver-120.0-20240123
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】


data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/weixin_57794111/article/details/142556148","extend1":"pc","ab":"new"}">>
id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type1" id="blog_extension">
class="blog_extension_card" data-report-click="{"spm":"1001.2101.3001.6470"}" data-report-view="{"spm":"1001.2101.3001.6470"}">
class="blog_extension_card_left">
class="blog_extension_card_cont">
class="blog_extension_card_cont_l">
软件测试小dao
class="blog_extension_card_cont_r">
微信公众号
软件测试资料共享(文档、视频、笔记源码)
评论记录:
回复评论: