Проблема в вашем тестовом коде.Ваша подпись метода @Test
говорит о том, что ему нужен объект WebDriver
в качестве параметра, но вы не сказали TestNG, как он должен найти экземпляр и затем внедрить его в ваш метод @Test
.TestNG сам по себе может только вставить нижеприведенные параметры в ваш метод @Test
(который называется native инъекция )
ITestResult
объект, который представляет тестрезультат. Method
объект, представляющий фактический метод. ITestContext
объект, представляющий выполняемый <test>
.
Подробнее о всехих и многое другое можно найти на официальном сайте документации .
. Чтобы решить вашу проблему, у вас есть два способа сделать это.
- Подход 1 (Это не позволит вам выполнять ваши тесты параллельно)
Измените @BeforeMethod
с
@BeforeMethod
public void setup (){
System.setProperty("webdriver.chrome.driver", "D:/Drivers/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("wwww.hhg.com");
}
на что-то вроде этого:
private WebDriver driver = null;
@BeforeMethod
public void setup (){
System.setProperty("webdriver.chrome.driver", "D:/Drivers/chromedriver.exe");
driver = new ChromeDriver();
driver.get("wwww.hhg.com");
}
Вашкод работал с локальной переменной WebDriver
в @BeforeMethod
.Измененный в основном использует элемент данных, а ваш @BeforeMethod
просто создает его экземпляр.Вам также необходимо избавиться от параметра WebDriver
из вашего метода @Test
.
подход 2
Вы используете те же детали, что и в подходе 1, но работаете с вариантом ThreadLocal вместо обычного WebDriver
объекта.Подробнее о работе с переменными ThreadLocal вы можете прочитать в моем блоге здесь .