1

我很惊讶没有找到任何智能解决方案如何使用 Selenium Grid 运行 Selenium webdriver 测试,而是使用多个浏览器运行每个测试。最好我想要某种配置(文件或硬编码),我可以在其中指定我希望我的测试运行的所有浏览器。然后每个测试将在每个浏览器上运行。

我假设可以编写自己的测试运行程序并放置一个循环,遍历所有浏览器的每个测试梯级。但也许有人知道更优雅的解决方案?有人做过吗?

PS 我找到了建议复制测试并为每个测试指定浏览器参数的解决方案。我不想要那个。

4

3 回答 3

0

我不熟悉 Selenium Grid,但我知道您可以通过在不同线程上运行每个测试来让 Selenium 同时打开多个浏览器。你可能想看看这个。

于 2014-10-15T14:47:33.423 回答
0

我所做的是在类级别运行我的测试,然后创建一个 TestNG.xml,然后在其中指定我希望运行的类以及它们应该运行的浏览器。所以我的 TestNG 文件看起来像:

    <?xml version="1.0" encoding="UTF-8"?>
<suite name = "suite1" verbose = "6" preserve-order="true" parallel = "false" thread-count="1">

    <test name = "Any Test">
    <parameter name = "browser" value ="chrome">
    <parameter name = "port" value = "5555">
    </parameter>
    </parameter>
        <classes>
             <class name = "name of class to run"/>      
        </classes>
    </test>
</suite>

然后因为我在 Selenium Grid 上运行,所以我在代码中传递浏览器和端口的参数,如下所示:

@BeforeMethod()
    @Parameters({"browser","port"})
    public void launchBrowsers(String browser, String port) throws Exception {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName(browser);
        capabilities.setJavascriptEnabled(true);

        setSelenium(new RemoteWebDriver(new URL("http://localhost:".concat(port).concat("/wd/hub")), capabilities));

        getSelenium().get(baseUrl); 
        getSelenium().manage().window().maximize();             
    }

希望这可以帮助

于 2015-01-15T16:08:11.097 回答
0

我已经解决了这个问题,我为每个 TestNG 套件指定了不同的浏览器参数。

于 2015-01-15T14:33:54.490 回答