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

Getting Parameter '{browser}' is required by @Configuration on method setup but has not been marked @Optional or defined(Tried solutions)

我正在 运行 通过 selenium 网格进行测试。我一直在收到上述错误。 以下是我尝试过的解决方案

  1. 尝试了 testng.xml
  2. 的 运行 测试
  3. 从 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>

我的javaclass看起来像这样

@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"));
    }

感谢您的宝贵时间

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

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

如果不行请告诉我,我会看看。

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

正确的语法是

Parameter({"browser"}) 

和 不是

Parameter("{browser}") 

能否请您尝试执行以下代码,如果可行请告诉我们

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