初识selenium-grid

什么是selenium-grid,官方解释:takes Selenium Remote Control to another level by running tests on many servers at the same time, cutting down on the time it takes to test multiple browsers or operating systems。

个人理解是分布式测试,即在不同的操作系统、浏览器上并发执行测试用例,那如何使用呢,这两天研究了一下,初步能调用起来,也算刚入门,今天做下总结。

首先要知道grid是有一个hub和若干个node组成,hub负责管理node和接收代码的request,并把request分发给node,让node去执行。

1.下载selenium-server-standalone-XXX.jar,可以去官网下载最新的,我这里是2.47版本的,下载地址:http://pan.baidu.com/s/1kT3rK5T

2.选一台机器作为hun,启动dos,输入命令:

 java -jar selenium-server-standalone-2.45.0.jar  -role  hub
 
3.选一台机器作为node,启动dos,输入命令:
 java -jar selenium-server-standalone-2.45.0.jar  -role  node  -hub http://172.16.28.34:4444/grid/register

172.16.28.34为hub的ip

4.如果电脑有限,可使用虚拟机或者在hub所在的机器,也启动一个node,启动dos,输入命令

java -jar selenium-server-standalone-2.45.0.jar  -role  node  -hub http://localhost:4444/grid/register

5.启动成功后,可在hub所在的机器的浏览器中输入http://localhost:4444/grid/console,查看所连接的node信息

6.测试代码

复制代码
/*
启动火狐浏览器
*/    

public static void testFireFox() {
        String key = "webdriver.firefox.bin";
        String value = "C:/Program Files (x86)/Mozilla Firefox/firefox.exe";
        System.setProperty(key, value);
        //DesiredCapabilities aDesiredcap = DesiredCapabilities("firefox", "22", Platform.LINUX)
        DesiredCapabilities test = DesiredCapabilities.firefox();
        test.setVersion("");
        test.setPlatform(Platform.WINDOWS);
        WebDriver dr;
        try {
            dr = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),test);
            dr.get("http://www.baidu.com");
            Thread.sleep(3000);
            dr.quit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
复制代码

 

复制代码
/*
启动火狐浏览器
*/

    public static void testChrome() {
        DesiredCapabilities aDesiredcap = DesiredCapabilities.chrome();  
        //aDesiredcap.setBrowserName("chrome");
        aDesiredcap.setPlatform(Platform.WINDOWS);
        WebDriver dr;
        try {
            dr = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), aDesiredcap);
            dr.get("http://www.baidu.com");
            dr.findElement(By.id("kw")).sendKeys("test");
            Thread.sleep(3000);
            dr.quit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
复制代码

 

复制代码
/*
启动IE浏览器
*/

    public static void testIE() {
        
        DesiredCapabilities aDesiredcap = DesiredCapabilities.internetExplorer();
        aDesiredcap.setPlatform(Platform.WINDOWS);
        
        WebDriver dr;
        try {
            dr = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), aDesiredcap);
            dr.get("http://www.baidu.com");
            Thread.sleep(3000);
            dr.quit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
复制代码

调用以上3个方法,hun会自动分配由哪个node去执行。

需要注意的是:

1.node所在机器的chromedriver.exe、IEDriverServer.exe需放在C盘的system32下,或者配置classpath,再或者用命令行指定路径

 java -jar selenium-server-standalone-2.45.0.jar -D webdriver.firefox.bin=”D:/Program Files/Mozilla Firefox/firefox.exe”  -role  node  -hub http://172.16.28.34:4444/grid/register 

 java -jar selenium-server-standalone-2.45.0.jar -D webdriver.chrome.driver="D:/chromedriver.exe"  -role  node  -hub http://172.16.28.34:4444/grid/register 

2.关闭hub和node机器的防火墙

3.异常

selenium.common.exceptions.WebDriverException: Message:

Error forwarding the new session cannot find : Capabilities [{browserName=htmlunit, javascriptEnabled=true, version=, platform=ANY}]

指定一下 browsername:

java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://IP:4444/grid/register  -browser  browserName=htmlunit  

 

关于grid的官网介绍:

https://github.com/SeleniumHQ/selenium/wiki/Grid2

posted on   乔叶叶  阅读(589)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示