@Configuration在方法设置中需要获取参数'{browser}',但尚未将其标记为@Optional或已定义(尝试过的解决方案)

时间:2019-04-18 08:59:07

标签: java selenium testng

我正在通过硒网格进行测试。我已经收到上述错误。 以下是我尝试过的解决方案

  1. 尝试从testng.xml运行测试
  2. 从testng属性中为testng.xml设置模板

错误仍然存​​在

我的testg文件如下

<suite name="TestSuite" thread-count="2" parallel="tests">
    <listeners>
    <listener class-name="com.hrmapp.orangehrm.Tests.ExtentListener"></listener>
    </listeners>
    <test name="tests">
    <parameter name="browser" value="chrome"></parameter>
        <classes>
            <class name="com.hrmapp.orangehrm.Tests.OrangeHRMTests"></class>
        </classes>
    </test>

    <test name="tests2">
    <parameter name="browser" value="firefox"></parameter>
        <classes>
            <class name="com.hrmapp.orangehrm.Tests.OrangeHRMTests"></class>
        </classes>
    </test>
</suite>

我的java类如下

@Parameters("{browser}")
    @BeforeClass
    public void setup(String browser) throws IOException {
        System.out.println(browser);
        launch(browser);
    }



 public static void launch(String browser) throws MalformedURLException{
        prop=PropertyReader.readData();
        setDriver(browser);
//      setDriver(prop.getProperty("browser"));
        getDriver().manage().window().maximize();
        getDriver().get(prop.getProperty("url"));
    }

感谢您的时间

3 个答案:

答案 0 :(得分:0)

尝试在测试前传递浏览器参数,因为您的测试设置值在.xml中。

@BeforeTest(alwaysTrue = true)
@Parameters("{browser}")
    public void setup(String browser) throws IOException {
        System.out.println(browser);
        launch(browser);
    }

让我知道是否行得通,我来看一下。

答案 1 :(得分:0)

我更正了参数的语法后,此问题得到解决

正确的语法是

Parameter({"browser"}) 

和 不是

Parameter("{browser}") 

答案 2 :(得分:0)

可以请您尝试执行以下代码,让我们知道它是否有效

    @Parameters("browser")
    @BeforeClass
    public void setup(String browser) throws IOException {
        System.out.println(browser);
        launch(browser);
    }