java - 如何在多个浏览器上一个接一个地运行 Selenium 测试

标签 java selenium testng

不确定哪里出了问题,我正在尝试在多个浏览器上一个接一个地运行同一组测试。

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。因此不会创建其他功能。因此,如果您删除它,测试应该可以正常运行。

关于java - 如何在多个浏览器上一个接一个地运行 Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587204/

相关文章:

java - 如何将鼠标悬停并按住

java - TestNG 测试不使用 TestPropertySource 来注入(inject) @Value

java - TestNG 仅在有限时间内充分利用四核

java - 左手坐标系的历史原因

java - 如何知道消息是否已被确认/确认?

java - 正则表达式以某种方式组合 AND 操作数、NOT 操作数和捕获组

java - 如何在java中使用ExtentReports监听器打印日志?

java - 当方法具有相同的名称但不同的签名时,方法是否被覆盖?

java - 当文件位于java项目中时,如何用Java读取excel文件?

java - 使用 selenium WebDriver 自动化 Flipkart 应用程序