初学者如何快速搭建基于 Selenium Grid 的分布式自动化

Selenium Grid是一个测试工具,它允许我们在不同的机器上针对不同的浏览器运行测试。

配置Hub

为了简单起见,我们将只使用一台机器来设置Hub,并在同一台机器上设置Node来运行测试。

1.需要安装Java 11或更高版本

2.需要安装浏览器

3.需要安装浏览器驱动程序

下载chromedriver

https://raw.githubusercontent.com/webdriverextensions/webdriverextensions-maven-plugin-repository/master/repository-3.0.json
  • 1

图片

需要已经安装并配置了PATH环境变量

4.从最新的发布版本下载Selenium Server jar文件

1.https://github.com/SeleniumHQ/selenium/releases/latest
2.https://www.selenium.dev/downloads

图片

5.存放目录(自定义)

在这里插入图片描述

6.创建Hub

java -jar selenium-server-4.16.1.jar hub
  • 1

图片

注意:正如开头所说,请使用java 11或更高版本,java 11下载请自行百度或在公众号内回复java 11下载,否则会报以下错误

D:\software\selenium>java -jar selenium-server-4.16.1.jar hub
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openqa/selenium/grid/Bootstrap has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)at java.net.URLClassLoader.access$100(URLClassLoader.java:73)at java.net.URLClassLoader$1.run(URLClassLoader.java:368)at java.net.URLClassLoader$1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:361)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

图片

7.验证Hub是否启动成功

图片

配置Node

我们在实际应用中,Hub必须和Node不在同一台机器上,我们为了测试方便,将Hub和Node部署在同一台机器上

1.如上所述先启动Hub

2.启动Node

java -jar selenium-server-4.16.1.jar node --hub  http://192.168.1.1:4444
  • 1

图片

我们再去Hub网页查看Node是否注册成功

图片

Hub和Node配置注意事项

1.hub和node在同一台机器

# hub和node在同一台机器,可以使用此命令启动node
java -jar selenium-server-4.16.1.jar node# 同一台计算机上有多个节点
# 节点1
java -jar selenium-server-4.16.1.jar node --port 5555# 节点2
java -jar selenium-server-4.16.1.jar node --port 6666

2.hub和node不在同一台机器

Hub和Nodes通过HTTP和事件总线(事件总线位于Hub内部)相互通信。节点通过事件总线向集线器发送消息以启动注册过程。当Hub收到消息时,通过HTTP与Node联系以确认其存在。

要成功地将Node注册到Hub,必须公开Hub机器上的事件总线端口(默认为4442和4443)。这也适用于节点端口。这样一来,Hub和Node就可以进行通了。

如果Hub使用默认端口,则可以使用–hub标志来注册节点

java -jar selenium-server-4.16.1.jar node --hub http://<hub-ip>:4444
  • 1

当Hub不使用默认端口时,需要使用–publish-events和–subscribe-events标记。例如,如果Hub使用端口8886、 8887和8888则使用以下命令

java -jar selenium-server-<version>.jar hub --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887 --port 8888
  • 1

Node需要使用这些端口才能成功注册

java -jar selenium-server-<version>.jar node --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887
  • 1

示例代码

1.pom.xml

<dependencies> <!-- https://mvnrepository.com/artifact/junit/junit -->  <dependency> <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.13.2</version>  <scope>test</scope> </dependency>  <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->  <dependency> <groupId>org.seleniumhq.selenium</groupId>  <artifactId>selenium-server</artifactId>  <version>4.0.0-alpha-2</version> </dependency> 
</dependencies>

2.示例代码

package org.example;import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import io.github.bonigarcia.wdm.WebDriverManager;import java.net.MalformedURLException;
import java.net.URL;/*** @author 作者:测试工程师成长之路* @version 创建时间:2024/1/21* 类说明:Selenium Grid*/
public class SeleniumGridTest {public static final String browserName = "chrome";@Testpublic void test() throws InterruptedException {try {System.setProperty("webdriver.chrome.driver","D:\\software\\selenium\\chromedriver.exe");DesiredCapabilities capability = new DesiredCapabilities();capability.setBrowserName(browserName);capability.setPlatform(Platform.WINDOWS);WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);driver.get("http://www.baidu.com");driver.manage().window().maximize();Thread.sleep(3000);//输入mrjade查询driver.findElement(By.id("kw")).sendKeys("mrjade" + Keys.ENTER);Thread.sleep(3000);// 点击mrjade-博客园,进入mrjade博客首页driver.findElement(By.xpath("//*[@id=\"1\"]/h3/a")).click();Thread.sleep(5000);driver.close();driver.quit();} catch (MalformedURLException e) {e.printStackTrace();}}
}

3.查看Hub网页显示

图片

官方文档

https://www.selenium.dev/zh-cn/documentation/grid/getting_started/
  • 1

注意

再次需要提醒,此次demo需使用java 11及以上版本,不建议使用WebDriverManager类来自动管理驱动,否则一堆错,比如浏览器版本与驱动版本不匹配,缺少xx类,403之类的,建议使用低版本的selenium server

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】进阶学习:pandas--isin()用法详解

【Python】进阶学习&#xff1a;pandas–isin()用法详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订阅…

【简略知识】项目开发中,VO,BO,PO,DO,DTO究竟是何方妖怪?

前言 在项目开发中&#xff0c;是否需要定义VO&#xff08;视图对象&#xff09;&#xff0c;BO&#xff08;业务对象&#xff09;&#xff0c;PO&#xff08;持久化对象&#xff09;&#xff0c;DO&#xff08;领域对象&#xff09;&#xff0c;DTO&#xff08;数据传输对象&…

2.1 mov、add和sub加减指令实操体验

汇编语言 1. mov操作 1.1 mov移动值 mov指令把右边的值移动到左边 mount c d:masm c: debug r ax 0034 r 073f:0100 mov ax,7t1.2 mov移动寄存器的值 把右边寄存器的值赋值给左边的寄存器 a 073f:0105 mov bx,axt1.3 mov高八位&#xff08;high&#xff09;和低八位&am…

求职招聘类App如何打造的更卓越:解析关键功能和发展趋势

随着人才市场的竞争日益激烈&#xff0c;求职招聘类App成为现代职场中不可或缺的工具。对您来说&#xff0c;一款卓越的求职招聘类App满足您用户的多样化需求是很有必要的。在这篇文章中&#xff0c;我们将深入探讨其关键功能和行业发展趋势&#xff0c;助您的App在市场中脱颖而…

腾讯云学生服务器使用教程_申请腾讯云学生机详细流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

overleaf上传到arxiv 参考文献无法引用(?)

记一下overleaf上传到arxiv的bug 参考文献无法引用&#xff08;&#xff1f;&#xff09; 因为需要上传bbl文件而不是bib 用overleaf生成bbl 另外需要将bbl和txt的文件名设置成一样的

机器学习 | 贝叶斯优化

机器学习 | 贝叶斯优化 在科学与工程领域&#xff0c;我们经常面临着需要优化某个目标函数的挑战。这个函数可能是一个复杂的黑箱&#xff0c;难以解析或者成本高昂。举个例子&#xff0c;我们可能希望在所有可能的药物组合中找到一种新药物&#xff0c;它对某个特定人群具有最…

购买腾讯云服务器请先领取代金券,2024腾讯云优惠

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…

React富文本编辑器开发(一)

这是一个系统的完整的教程&#xff0c;每一节文章的内容都很重要。这个教程学完后自己可以开发出一个相当完美的富文本编辑器了。下面就开始我们今天的内容&#xff1a; 安装 是的&#xff0c;我们的开发是基于Slate的开发基础&#xff0c;所以要安装它&#xff1a; yarn ad…

1、jQuery介绍、css()、选择器、事件、动画

一、jQuery介绍&#xff1f; 1、什么是jQuery&#xff1f; 是一个JavaScript函数库 2、jQuery特点 写的少&#xff0c;做的多 3、jQuery的安装 直接下载引入 <script src"jquery-1.10.2.min.js"></script>通过cdn引入 <script src"https…

【Memory协议栈】EEPROM Driver模块介绍

目录 前言 正文 1.功能简介 2.关键概念 3.功能详解 3.1 Job通用需求 3.2 Read作业处理 3.3 Write作业处理 3.4 Erase作业处理 3.5 Compare作业处理 4.关键API定义 4.1 Eep_Read 4.2 Eep_Write 4.3 Eep_Erase 4.5 Eep_Cancel 4.5 Eep_MainFunction 5.外部EEPRO…

社区店选址人流量标准:如何确保充足的顾客流量

在选择社区店的位置时&#xff0c;确保充足的顾客流量是至关重要的。 作为一名开鲜奶吧5年的创业者&#xff0c;我将分享一些关于社区店选址人流量标准的关键要点&#xff0c;帮助你找到最适合的店铺位置。 1、研究人口统计学数据 了解潜在顾客的人口特征是选址的基础。通过研…