多个浏览器上的Selenium并行测试(JAVA)

时间:2014-10-15 10:34:13

标签: java selenium parallel-testing

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

我认为可以编写自己的testrunner并在所有浏览器中循环迭代每个测试行。但也许有人知道更优雅的解决方案?有人这样做了吗?

P.S。我找到了建议重复测试并为每个测试指定浏览器参数的解决方案。我不希望这样。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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();             
    }

希望这有帮助