seleniumgrid2-@ ошибка аннотации параметров
Я хочу запустить свой код на двух разных машинах (на данный момент я зарегистрировал свой локальный компьютер как концентратор и 2 узла), поэтому при запуске файла testng.xml я получаю ошибку ниже.
Я получаю сообщение об ошибке при запуске файла testng.xml, ошибка приложения:- см. Мой файл testng.xml и мой код, приведенный ниже:-
My testng.xml file is:-
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" thread-count="4" parallel="tests">
<test name="PVR Test">
<parameter name="remoteurl" value="http://localhost:5555/wd/hub" />
<classes>
<class name="dd_testcases.login">
<methods>
<include name="banner_check" />
</methods>
</class>
</classes>
</test> <!-- Test -->
<test name="footersection">
<parameter name="remoteurl" value="http://localhost:5556/wd/hub" />
<classes>
<class name="dd_testcases.News_General_Footer">
<methods>
<include name="News_General_Footer" />
</methods>
</class>
</classes>
</test>
Test
</suite> <!-- Suite -->
and my code is :-
@BeforeSuite
@Parameters("remoteurl")
public void init(String remoteurl) throws IOException, InterruptedException{
//BasicConfigurator.configure();
dbcon=new sqldbconfig();
logs=Logger.getLogger("PVR");
config=new Properties();
OR=new Properties();
if (driver==null){
InputStream is = getClass().getResourceAsStream("/config.properties");
config.load(is);
//fis=new FileInputStream(config.getProperty("confpath"));
fis=new FileInputStream(System.getProperty("user.dir")+config.getProperty("ORpath"));
//fis=new FileInputStream(System.getProperty("user.dir")+"\\src\\dd_properties\\OR.properties");
OR.load(fis);
//fis=new FileInputStream(config.getProperty("xlspath"));
excel=new Xls_Reader(System.getProperty("user.dir")+config.getProperty("xlspath"));
System.out.println("Browser:: "+config.getProperty("Browser"));
if (config.getProperty("Browser").equalsIgnoreCase("Mozilla")){
cap=DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
cap.setPlatform(Platform.ANY);
}
else if(config.getProperty("Browser").equalsIgnoreCase("chrome")){
cap=DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
cap.setPlatform(Platform.ANY);
}
driver=new RemoteWebDriver(new URL(remoteurl),cap);
driver.get(config.getProperty("testurl"));
and when i run via testng.xml file code throws error:-
org.testng.TestNGException:
Parameter 'remoteurl' is required by @Configuration on method init but has not been marked @Optional or defined
in C:\Users\HT1\workspace\PVRGrid-A\testng.xml
at org.testng.internal.Parameters.createParameters(Parameters.java:148)
at org.testng.internal.Parameters.createParameters(Parameters.java:361)
at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:84)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:197)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:296)
at org.testng.SuiteRunner.run(SuiteRunner.java:259)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
at org.testng.TestNG.run(TestNG.java:1018)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Please help me.....what i am doing wrong....
2 ответа
Почему вы создаете драйвер в @beforesuite? Это должно быть создано в @beforeclass. Он имеет только один объект драйвера. Также я не уверен, как ваш метод обращается к этому объекту драйвера, так как вы не опубликовали фактический метод. Но я думаю, проблема в том, что ваши методы используют тот же объект драйвера, что и предыдущий пакет, запускается только один раз.
Вы определили "remoteurl" как параметр на уровне теста в TestNG xml, тогда как в коде вы ссылаетесь на уровне набора в init(). Измените параметр на уровень набора в TestNG xml, объявив после тега набора, и он должен работать. Объявление URL на уровне набора имеет смысл, поскольку все тесты будут выполняться с использованием одного и того же сеанса сервера.