网格在测试运行期间未遵循“平台”要求

安东

我在2个不同节点上的硒网格中有2个测试。运行MAC的节点之一,另一个WIN。

当我在TestNG中指定时,运行两个测试(例如,我要启动“仅Win Chrome浏览器”测试和“仅MAC FF”测试。)

它会随机启动它们,有时mac会再次获得FF,如果win关闭,它将在mac上启动两个测试。

当我在测试中指定

<parameter name="platform" value="WINDOWS" />

它可以在Mac上启动此测试,反之亦然。

这是我的TestNG文件:

<suite name="TestSuite" parallel="tests">


    <test name="win chrome test">
        <parameters>
            <parameter name="platform" value="WINDOWS" />
            <parameter name="browser" value="chrome" />
            <parameter name="version" value="55.0" />
            <parameter name="url" value="https://google.com" />
        </parameters>
        <classes>
            <class name="com.ParallelTest.CreateRandomProfileTest"/>
            <class name="com.ParallelTest.LogInTest">

            </class>
        </classes>
    </test>


    <test name="mac firefox test">
        <parameters>
            <parameter name="platform" value="MAC" />
            <parameter name="browser" value="firefox" />
            <parameter name="version" value="50.1.0" />
            <parameter name="url" value="https://google.com" />
        </parameters>
        <classes>
            <class name="com.ParallelTest.CreateRandomProfileTest"/>
            <class name="com.ParallelTest.LogInTest">

            </class>
        </classes>
    </test>



</suite> 

这是我的网格设置文件:

package com.parallelSetUp;


import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class Framework{
    String browser;
    protected WebDriver driver;

    @Parameters({ "platform","browser","version", "url" })
    @BeforeClass(alwaysRun=true)
    public void setup(String platform, String browser, String
            version, String url) throws MalformedURLException
    {
        this.browser = browser;
        driver = getDriverInstance(platform, browser, version, url);

    }

    public static WebDriver getDriverInstance(String platform, String browser, String version, String url)
            throws MalformedURLException {
        String nodeURL = "http://192.168.1.115:4444/wd/hub";
        WebDriver driver = null;
        DesiredCapabilities caps = new DesiredCapabilities();

        // Platforms
        if (platform.equalsIgnoreCase("WINDOWS")) {
            caps.setPlatform(Platform.WINDOWS);
        }
        if (platform.equalsIgnoreCase("MAC")) {
            caps.setPlatform(Platform.MAC);
        }
        if (platform.equalsIgnoreCase("ANDROID")) {
            caps.setPlatform(Platform.ANDROID);
        }

        // Browsers
        if (browser.equalsIgnoreCase("chrome")) {
            caps = DesiredCapabilities.chrome();
            //System.setProperty("webdriver.chrome.driver", "/Users/antonfiliptsov/Desktop/Grid/Chrome/ChromeDriver/chromedriver");
        }
        if (browser.equalsIgnoreCase("firefox")) {

            caps = DesiredCapabilities.firefox();
            //System.setProperty("webdriver.gecko.driver","/Users/antonfiliptsov/Desktop/Grid/Firefox/geckodriver");
        }
        if (browser.equalsIgnoreCase("safari")){
            caps = DesiredCapabilities.safari();
        }

        // Version
        caps.setVersion(version);
        driver = new RemoteWebDriver(new URL(nodeURL), caps);
        // Maximize the browser's window
         driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        // Open the Application
        driver.get(url);
        return driver;
    }

    @AfterClass
    public void afterClass() {
        driver.quit();
    }
}

这是我的Node.json

{
  "capabilities":
  [
    {
      "browserName": "firefox",
      "maxInstances": 5,
      "version": "50.1.0",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "version": "55.0",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "safari",
      "maxInstances": 1,
      "version": "10.0.2",
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5555,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://192.168.1.115:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {}
}
阿奇科耶维奇

首先,在启动所有节点并与集线器连接之后,应确保节点具有哪些功能,请在http://localhost:{port}/grid/console集线器计算机上查看此功能节点匹配中考虑的功能是PLATFORMBROWSER_NAMEVERSIONBROWSER_VERSIONAPPLICATION_NAME

之后,您可以确定网格节点是如何匹配的,如果不足以满足您的需要,则可以扩展DefaultCapabilityMatcher类并添加自己的匹配器(我几周前做了此操作,添加了自定义参数以确保其行为与我一样)。想)。如果您决定扩展默认匹配器,则此链接将是一个不错的开始。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在测试运行期间浏览

来自分类Dev

可以在测试运行期间获得先前的测试

来自分类Dev

Web测试运行期间无效的URI错误

来自分类Dev

Web测试运行期间无效的URI错误

来自分类Dev

在每次测试之后,让NUnit控制台在测试运行期间报告测试结果

来自分类Dev

普通测试测试运行期间啤酒调用失败

来自分类Dev

Rails 4.2:如何在正常测试运行期间排除性能测试

来自分类Dev

普通测试测试运行期间啤酒调用失败

来自分类Dev

计算单元测试运行期间发生的gc的数量

来自分类Dev

Webtest:在测试运行期间编辑上下文参数

来自分类Dev

测试运行器在重播期间找不到控件

来自分类Dev

业力测试运行程序未运行任何测试

来自分类Dev

在测试运行时类型检查期间如何模拟Python类?

来自分类Dev

着色golang测试运行输出

来自分类Dev

作为Maven测试运行

来自分类Dev

再现ScalaCheck测试运行

来自分类Dev

Couchbase测试运行失败

来自分类Dev

Intellij测试运行历史

来自分类Dev

测试运行null和字母?

来自分类Dev

Serverspec测试运行问题

来自分类Dev

使用JUNIT测试运行AsyncHttpClient

来自分类Dev

KIF测试运行时应用崩溃,并且未报告任何故障

来自分类Dev

MTM测试运行程序未检测到AJAX回调

来自分类Dev

测试运行后,serenity 未捕获任何屏幕截图

来自分类Dev

要在Xcode中进行UI测试期间在测试运行后停止调试控制台的清除

来自分类Dev

如何使Tycho将平台特定的片段加载到任何OS的测试运行时中?

来自分类Dev

如何使用dotnet测试运行特定测试?

来自分类Dev

使单元测试作为集成测试运行

来自分类Dev

Visual Studio测试运行无法加载测试

Related 相关文章

热门标签

归档