使用Selenium Grid远程执行测试

news2024/11/29 6:38:29

我们将在同一台工作电脑上,分别启动主控(Hub)和节点(Node)2个Selenium Grid服务,IP地址均使用环回地址127.0.0.1,端口分别为4444和5555。开始以下操作前,请确认你的机器上已经安装、配置好Java的开发环境。

  1. 从这里下载最新版的Selenium Grid。
  2. 执行以下命令,启动主控(Hub)服务。注意这里使用了与后续命令不同的hub选项;

    java -jar /Users/aaron/driver/selenium-server-4.0.0.jar hub --host 127.0.0.1 --port 4444
  3. 执行以下命令,启动节点(Node)服务。此处通过-D参数设置了Chrome驱动的文件路径作为系统属性;使用--hub参数,注册到了上一步中启动的(主控)Hub中;通过--driver-configuration参数,提供了Chrome相关的测试能力。

    java -Dwebdriver.chrome.driver=/Users/aaron/driver/chromedriver \
      -jar /Users/aaron/driver/selenium-server-4.0.0.jar \
      node \
      --host 127.0.0.1 --port 5555 \
      --hub http://127.0.0.1:4444/grid/register \
      --driver-configuration display-name="Chrome" webdriver-path="/Users/aaron/driver/chromedriver" stereotype='{"browserName": "chrome", "browserVersion": "95"}'
  4. 打开(主控)Hub的地址http://127.0.0.1:4444,可以看到Node已经注册成功。

注:实验发现,官网4.0手册中所述的、紧跟--driver-configuration选项的webdriver-path参数未起作用。故此处重复使用了-D参数来指定驱动的文件路径,这会造成上图中出现2个Chrome能力的图标,但不影响使用。

  1. 执行以下命令,从Gitee代码仓库获取演示项目的源代码;

    git clone https://gitee.com/ngtesting/ci_test_selenium_simple
  2. 在Idea中打开项目,右击SeleniumTestRemote.java测试类文件,选择Debug的菜单项,执行JUnit单元测试。

这里给出完整的Java代码文件,请留意它是如何连接远程主控(Hub)执行测试的。其他语言的例子,请参照Selenium官方示例。

package com.deeptest.sample.selenium;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class SeleniumTestRemote {

    // 类级别的变量
    private WebDriver driver;
    private Map<String, Object> vars;
    JavascriptExecutor js;

    // 使用JUnit的@Before注解,定义在测试执行前,需执行的初始化行为。
    @Before
    public void setUp() {
        // 在请求中,指定需要chrome 95的测试能力
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setCapability("browserVersion", "95");

        // 初始化RemoteWebDriver对象,连接到主控(Hub)服务;
        // 实际测试执行将发生在,已成功注册到Hub上的Node节点中。
        WebDriver driver = null;
        try {
            driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub"), chromeOptions);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 初始化JS执行器对象,用于在浏览器中执行Javascript代码。
        js = (JavascriptExecutor) driver;
    }

    // 使用JUnit的@After注解,定义在测试完成后,需执行的清理代码。
    @After
    public void tearDown() {
        // 退出并清理WebDriver对象
        if (driver != null) {
            driver.quit();
        }
    }

    // 使用JUnit的@After注解,标注此方法为一个测试方法。
    @Test
    public void test1() {
        // 打开百度网站首页
        driver.get("https://www.baidu.com/");

        // 设置浏览器窗口大小为1440x875
        driver.manage().window().setSize(new Dimension(1440, 875));

        // 找到id为kw的(文本框)控件,在里面输入“禅道”文字。
        driver.findElement(By.id("kw")).sendKeys("禅道");

        // 找到id为su的(按钮)控件,并点击。
        driver.findElement(By.id("su")).click();

        // 找到指定内容的链接,并点击。
        driver.findElement(By.partialLinkText("开源项目管理软件")).click();
    }

}

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

8小时传疯!大厂面试真题全被大佬整理在这个小程序上了!【软件测试,建议收藏】

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础 

  全套资料获取方式:点击下方小卡片自行领取即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VERT2450 Antenna

VERT2450 Vertical Antenna (2.4-2.5 and 4.9-5.9 GHz) Dualband Includes one VERT2450 Dual Band 2.4 to 2.48 GHz and 4.9 to 5.9 GHz omni-directional vertical antenna, at 3dBi Gain.

GPT-4V:AI在医疗领域的应用

OpenAI最新发布的GPT-4V模型为ChatGPT增添了语音和图像功能&#xff0c;为用户提供了更多在日常生活中使用ChatGPT的方式。这次更新将为用户带来更加便捷、直观的交互体验&#xff0c;用户可以直接通过拍照上传图片&#xff0c;并提出相关问题。OpenAI的最终目标是构建一个安全…

数据库多数据组合 取别名,某项多项数据为null,导致整个结果为null,SQLSERVER,MYSQL

最近遇到一个通过查多项数据,并且组合拼接展示的场景, 发现所有数据单查都没问题,唯独含有一个或多个结果是null的拼接结果出了问题 简单的demo如下: 此时我们可以看到拼接的结果返回[null],我们想要的是即使是null也拼接进去获取其他展示情况我们视需求开发而定, 比如我现在…

阿里云python训练营-Python基础学习01

基础知识 a "hello" b "hello" print(a is b, a b) # True True print(a is not b, a ! b) # False False a ["hello"] b ["hello"] print(a is b, a b) # False True print(a is not b, a ! b) # True False 注意&#xff1a…

Java 设计模式——外观模式

目录 1.概述2.结构3.实现3.1.子系统类3.2.外观类3.3.测试 4.优缺点5.使用场景6.源码解析 1.概述 &#xff08;1&#xff09;有些人可能炒过股票&#xff0c;但其实大部分人都不太懂&#xff0c;这种没有足够了解证券知识的情况下做股票是很容易亏钱的&#xff0c;刚开始炒股肯…

2023测试开发常见面试题

1. 什么是软件测试&#xff0c; 谈谈你对软件测试的了解 软件测试就是验证产品特性是否符合用户需求, 软件测试贯穿于软件的整个生命周期. >>> 那软件测试具体是什么呢 ? 就拿生活中的例子来说, 比如说我们去商场买衣服, 会有以下几个步骤&#xff1a; 第一步:…

leetcode:189. 轮转数组(python3解法)

难度&#xff1a;中等 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4]解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3…

Spring @Value注解读取yml配置文件中的list和map

配置文件 myConfig:userList: 张三,李四userMap: {"张三":"10","李四":"20"} 读取代码 Value("${myConfig.userList}")private List<String> userList;Value("#{${myConfig.userMap}}")private Map<S…

数据结构线性表——单链表

前言&#xff1a;小伙伴们又见面啦&#xff0c;这篇文章我们来一起学习线性表的第二模块——单链表。 单链表的学习就要开始上强度啦&#xff0c;小伙伴们一定要努力&#xff0c;坚持&#xff01; 目录 一.什么是单链表 二.单链表与顺序表的区别 三.单链表的实现 1.单链表…

如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

11月起,33个省份纳入数电票开票试点范围内,发票无纸化已是大势所趋!

10月底&#xff0c;北京、贵州、山东&#xff08;不含青岛市&#xff09;、湖南、宁夏5个地区相继发布开展数电票试点工作的通知&#xff0c;至此&#xff0c;全国已有33个省份纳入数电票开票试点范围内。根据上述5地区发布的相关公告&#xff0c;11月1日将正式推行“数电票”开…

Java-认识类和对象

本章重点&#xff1a; 1. 掌握类的定义方式以及对象的实例化 2. 掌握类中的成员变量和成员方法的使用 3. 掌握对象的整个初始化过程 4. 掌握封装特性 5. 掌握代码块 6. 掌握内部类 1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Pro…

HarmonyOS ArkTS基础知识

概述 上一节&#xff0c;学习了TypeScript的基础语法&#xff0c;而在鸿蒙开发当中&#xff0c;有基于自己的编程语言&#xff0c;便是ArkTS。它是一种声明式UI的编程范式的语言&#xff0c;开发框架如下图所示&#xff1a; 根据框架图&#xff0c;分析&#xff0c;我将它大致…

2023_11_6 每日半小时 SQL 刷题

文章目录 1. 查询所有列题目描述SQL 语句编写 2. 查询多列题目描述SQL 语句编写 3. 查询结果去重题目描述SQL 语句编写 4. 查询结果限制返回行数题目描述SQL 语句编写 5. 将查询后的列重新命名题目描述SQL 语句编写 语法小总结 1. 查询所有列 题目链接&#xff1a;SQL1 查询所…

SAP-MM-批量扩充视图

MM50 可以通过这个程序批量维护或查看这个物料没有维护的视图&#xff0c;进行扩充。

weblogic弱口令漏洞复现

文章目录 一、漏洞特征1.可以直接获取passwd文件2.可以直接获取密文文件3.可以直接获取密钥文件4.解密密码5.登录后台 二、命令执行复现1.部署webshell2.Shell命令执行3.jsp一句话木马 一、漏洞特征 1.可以直接获取passwd文件 http://192.168.232.131:7001/hello/file.jsp?p…

找茬小游戏源码系统 无聊就来玩一玩 带完整的搭建教程

找茬小游戏是一种经典的休闲游戏&#xff0c;它以找出不同之处为核心玩法&#xff0c;锻炼玩家的观察力和反应能力。随着互联网技术的发展和普及&#xff0c;越来越多的游戏开发者开始尝试开发这种简单有趣的游戏。下面源码小编就来给大家介绍一下这款源码系统的搭建教程以及核…

哈夫曼编码与解码,基于Python实现

from itertools import count from collections import Counter from heapq import heapify, heappush, heappopdef huffman_tree(s):# 统计每个字符出现的次数s Counter(s) # 计算可迭代序列中元素的数量&#xff0c;返回字典类型数据c…

2023年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 有一组数据存在列表中,things[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“香蕉”]&#xff0…

Python如何实现查看WiFi密码?

由于最近公司加强对无线安全的管理&#xff0c;wifi密码从以前的12345678&#xff0c;变成复杂难记的一串&#xff0c;导致我时常忘记WIFI密码&#xff0c;而遭受同事的“毒打”。由于我不是那种喜欢打扰同事认真工作的人&#xff0c;于是&#xff0c;我决定用python来试试&…