我很惊讶没有找到任何智能解决方案如何使用Selenium Grid运行Selenium webdriver测试,而是使用多个浏览器运行每个测试。我希望有一些配置(文件或硬编码),我可以指定我希望运行测试的所有浏览器。然后每个测试都将在每个浏览器上运行。
我认为可以编写自己的testrunner并在所有浏览器中循环迭代每个测试行。但也许有人知道更优雅的解决方案?有人这样做了吗?
P.S。我找到了建议重复测试并为每个测试指定浏览器参数的解决方案。我不希望这样。
答案 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();
}
希望这有帮助