我如何 运行 selenium 在多个浏览器上一个接一个地测试
How do I run selenium test one after the other on multiple browser
不确定哪里出了问题,我正在尝试 运行 在多个浏览器上一个接一个地测试同一组。
TestNG.xml
<suite name="Selenium Tests" parallel="false" thread-count="5">
<listeners>
<listener class-name="ww5.listener.Listener" />
</listeners>
<test name="Chrome" preserve-order="true">
<parameter name="browser" value="chrome"/>
<classes>
<class name="ww5.testcases.version.version" ></class>
<class name="ww5.testcases.loginSuite.LoginTest" ></class>
<class name="ww5.testcases.loginSuite.LogoutTest" ></class>
</classes>
</test>
<test name="Firefox" preserve-order="true">
<parameter name="browser" value="firefox"/>
<classes>
<class name="ww5.testcases.version.version" ></class>
<class name="ww5.testcases.loginSuite.LoginTest" ></class>
<class name="ww5.testcases.loginSuite.LogoutTest" ></class>
</classes>
</test>
</suite>
当我 运行 执行此操作时,所有测试都在 chrome 上执行,我如何让它在 chrome.
上执行完后在 firefox 上执行
OpenBrowser.java
@Parameters ({"browser"})
@BeforeClass
public void launchBrowser(String browser) throws Exception {
//initLogs(this.getClass());
initConfigurations();
if (driver == null) {
DesiredCapabilities cap = null;
if(browser.equalsIgnoreCase("firefox"))
{
cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
//cap.setPlatform(org.openqa.selenium.Platform.WINDOWS);
}
if(browser.equalsIgnoreCase("internet explorer"))
{
cap = DesiredCapabilities.internetExplorer();
cap.setBrowserName("internet explorer");
cap.setPlatform(org.openqa.selenium.Platform.ANY);
}
if(browser.equalsIgnoreCase("chrome"))
{
cap = DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
cap.setPlatform(org.openqa.selenium.Platform.ANY);
}
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), cap);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
wait = new WebDriverWait(driver,30);
}
}
替换<suite name="Selenium Tests" parallel="false" thread-count="5">
<suite name="Selenium Tests" parallel="tests" thread-count="2">
其他一切似乎都很好。有关详细信息,请参阅 this。
编辑:
我对你的问题理解有误。您无法 运行 顺序测试的问题是由于 if (driver == null)
。这意味着您的测试将第一次 运行 很好,因为驱动程序为空,但之后由于您的驱动程序定义,它可能不是 null
,因此不会创建其他功能。所以,如果你删除它,测试应该 运行 没问题。
不确定哪里出了问题,我正在尝试 运行 在多个浏览器上一个接一个地测试同一组。
TestNG.xml
<suite name="Selenium Tests" parallel="false" thread-count="5">
<listeners>
<listener class-name="ww5.listener.Listener" />
</listeners>
<test name="Chrome" preserve-order="true">
<parameter name="browser" value="chrome"/>
<classes>
<class name="ww5.testcases.version.version" ></class>
<class name="ww5.testcases.loginSuite.LoginTest" ></class>
<class name="ww5.testcases.loginSuite.LogoutTest" ></class>
</classes>
</test>
<test name="Firefox" preserve-order="true">
<parameter name="browser" value="firefox"/>
<classes>
<class name="ww5.testcases.version.version" ></class>
<class name="ww5.testcases.loginSuite.LoginTest" ></class>
<class name="ww5.testcases.loginSuite.LogoutTest" ></class>
</classes>
</test>
</suite>
当我 运行 执行此操作时,所有测试都在 chrome 上执行,我如何让它在 chrome.
上执行完后在 firefox 上执行OpenBrowser.java
@Parameters ({"browser"})
@BeforeClass
public void launchBrowser(String browser) throws Exception {
//initLogs(this.getClass());
initConfigurations();
if (driver == null) {
DesiredCapabilities cap = null;
if(browser.equalsIgnoreCase("firefox"))
{
cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
//cap.setPlatform(org.openqa.selenium.Platform.WINDOWS);
}
if(browser.equalsIgnoreCase("internet explorer"))
{
cap = DesiredCapabilities.internetExplorer();
cap.setBrowserName("internet explorer");
cap.setPlatform(org.openqa.selenium.Platform.ANY);
}
if(browser.equalsIgnoreCase("chrome"))
{
cap = DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
cap.setPlatform(org.openqa.selenium.Platform.ANY);
}
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), cap);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
wait = new WebDriverWait(driver,30);
}
}
替换<suite name="Selenium Tests" parallel="false" thread-count="5">
<suite name="Selenium Tests" parallel="tests" thread-count="2">
其他一切似乎都很好。有关详细信息,请参阅 this。
编辑:
我对你的问题理解有误。您无法 运行 顺序测试的问题是由于 if (driver == null)
。这意味着您的测试将第一次 运行 很好,因为驱动程序为空,但之后由于您的驱动程序定义,它可能不是 null
,因此不会创建其他功能。所以,如果你删除它,测试应该 运行 没问题。