zoukankan      html  css  js  c++  java
  • selenium Grid

    Selenium Grid 的机制是启动一个 hub,然后启动多个 Selenium RC 注册到 hub 上,
    当测试请求到 hub 时,hub 会将测试分发给 Selenium RC, Selenium RC 会实际的启动一个浏览器完成测试。

     grid原理图

    安装java jdk 并配置好环境的条件下

    1.本机启动hub ( win 7 64bit FF 28.0)

    java -jar selenium-server-standalone-2.41.0.jar -role hub -maxSession 40 -port 4444

    2.另外一台启动node (win  7 32bit ff 24.5.0),防火墙需要关闭

    java -jar selenium-server-standalone-2.41.0.jar -role node
    -hub http://{grid_server}:4444/grid/register -port 5555
    -firefoxProfileTemplate llinotes.profile -maxSession 20
    -browser "browserName=firefox,version=28.0,platform=WINDOWS,maxInstances"

    在远程机器显示 couldn't register this node,

    将node输入命令改成如下:

    java -jar selenium-server-standalone-2.41.0.jar -role webdriver

    -hub http://192.168.1.9:4444/grid/register -port 5555

    -firefoxProfileTemplate llinotes.profile -maxSession 20

    -browser "browserName=firefox,version=28.0,platform=WINDOWS,maxInstances"

    register成功

     

    run hub机器上的脚本

     [Test]
            public void Test()
            {
                DesiredCapabilities capabilities = new DesiredCapabilities();
    
                capabilities = DesiredCapabilities.Firefox();
    
                capabilities.SetCapability(CapabilityType.BrowserName, "firefox");
    
                capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
    
                capabilities.SetCapability(CapabilityType.Version, "24.5.0");
    
    
    
    
                driver = new RemoteWebDriver(new Uri("nodeUrl/wd/hub"), capabilities);
              
    
                baseURL = "https://www.google.com/";
    
                verificationErrors = new StringBuilder();
    
    
                driver.Navigate().GoToUrl(baseURL);
                driver.FindElement(By.Id("lst-ib")).SendKeys("selenium");
                driver.FindElement(By.Name("btnK")).Click();
            }

    可以打开Node FF浏览器并进行操作。Done 

    hub机器显示信息:

     

    node机器显示:

    接着又遇到一个问题:如果我要在不同的机器上运行hub上的测试,应该怎么做呢

    我试着在另外一台node机器register node(记得关闭防火墙)

    在hub机器添加如下代码,将nodeUrl改成其他机器上的ip,运行所有测试,按照测试顺序启动不同机器的浏览器

    [Test]
            public void Test()
            {
                DesiredCapabilities capabilities = new DesiredCapabilities();
    
                capabilities = DesiredCapabilities.Firefox();
    
                capabilities.SetCapability(CapabilityType.BrowserName, "firefox");
    
                capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
    
                capabilities.SetCapability(CapabilityType.Version, "28.0");
    
    
    
    
                driver = new RemoteWebDriver(new Uri("nodeUrl2/wd/hub"), capabilities);
              
    
                baseURL = "https://www.google.com/";
    
                verificationErrors = new StringBuilder();
    
    
                driver.Navigate().GoToUrl(baseURL);
                driver.FindElement(By.Id("lst-ib")).SendKeys("selenium");
                driver.FindElement(By.Name("btnK")).Click();
            }

    为了省事,我想把那些命令直接用cmd批处理来执行

    新建.txt文件,输入如下内容:
    cd selenium-server-standalone-2.41.0.jar路径
    java -jar selenium-server-standalone-2.41.0.jar -role hub -maxSession 40 -port 4444

    另存为hubstart.bat,双击就能直接运行这个命令启动hub

  • 相关阅读:
    Java实现交替字符串
    Java实现交替字符串
    Java实现格子取数问题
    Java实现格子取数问题
    Java实现格子取数问题
    Java实现格子取数问题
    Java实现格子取数问题
    主要C++流派,看看你是哪一流
    WPF与WinForm的抉择
    编译icu库(用到了cygwin)
  • 原文地址:https://www.cnblogs.com/cloud-test/p/3666166.html
Copyright © 2011-2022 走看看