使用Selenium Grid远程执行测试

本文详细指导如何在一台电脑上配置SeleniumGrid的Hub和Node服务,使用Java和ChromeDriver进行远程测试,包括启动服务、设置系统属性、执行单元测试等步骤。
摘要由CSDN通过智能技术生成

我们将在同一台工作电脑上,分别启动主控(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、计算机基础 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值