带有跨浏览器的testng.xml

时间:2018-05-21 06:42:56

标签: selenium testng selenium-chromedriver

我在使用带有xml文件的testNg在selenium java中启动浏览器时遇到了一些问题。当没有" driver = new ChromeDriver()时,代码似乎工作正常;"我参与到目前为止所附的一切

所以她是我的班级档案

package corssBrowsers;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class VerifyTitle {

WebDriver driver;

@Test(priority=1)
public void sam() {
    System.out.println("Hello sam");
}

@Test(priority = 2)
@Parameters({"browser"})
public void browsers(String browsername) {

    System.out.println(browsername);

    if(browsername.equalsIgnoreCase("chrome")) {
        System.out.println("You have selected " + browsername);

        System.setProperty("webdriver.chrome.driver",
                System.getProperty("user.dir") + "\\Drivers\\Windows\\chromedriver.exe");

        driver = new ChromeDriver();

    }
    else {
        System.out.println("You have not selected chrome");
    }

    driver.manage().window().maximize();
    driver.get("www.yahoo.com");
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

}


}

我的testng.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">



<test name="Test">

<parameter name="browser" value="chrome"/>

<classes>
<class name="corssBrowsers.VerifyTitle"/>
</classes>

</test> <!-- Test -->
</suite> <!-- Suite -->

当我运行测试表单时,我一直得到xml:

[RemoteTestNG] detected TestNG version 6.14.2
Hello sam
chrome
You have selected chrome
Starting ChromeDriver 2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91) 
on port 13932
Only local connections are allowed.

===============================================
Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================

当我运行表单文件时,我得到:

PASSED: sam
FAILED: browsers
org.testng.TestNGException: 
Parameter 'browser' is required by @Test on method browsers but has not been 
marked @Optional or defined

在这两种情况下,即使代码正确,Chrome浏览器也无法启动(在我做的其他测试中也能正常工作)。那么,我做错了什么?

2 个答案:

答案 0 :(得分:0)

browsers 方法有参数,此参数在TestNG XML中定义。如果您在类级别运行测试,那么系统将不会获取浏览器名称并将抛出错误。您可以在参数中添加可选标记,如果未在testng xml中指定值,或者如果您在类级别中运行,则可选的注释值将被视为默认值。

您需要修改以下代码

public void browsers(@Optional("chrome") String browsername) {

    System.out.println(browsername);

答案 1 :(得分:0)

您必须为browsername参数添加默认值,让我们一起考虑它。 您在浏览器的xml runner文件中添加了一个参数,当您运行该文件时,参数将传递给声明@Parameters的@Test。 现在,如果您自己运行测试类,则该值不会从xml文件传递给@Test,因为没有启动您需要作为TestNG运行程序运行的文件。

请将此类默认值添加为参数:

display:block

}

再说一遍,尝试使用TestNG注释进行设置配置。我建议使用@BeforClass来创建驱动程序。