Selenium Webdriver, TestNG – поставщик данных пытается передать параметр 2, но метод принимает 3, а TestNG не может вставить подходящий объект

Я пытаюсь извлечь данные из листа excel и передать эти тестовые данные в поле ввода и поле пароля для веб-приложения, но я получаю ошибку.

Я получаю следующую ошибку:

org.testng.TestNGException: The data provider is trying to pass 2 parameters but the method com.access.Curam#setUp takes 3 and TestNG is unable in inject a suitable object 

Ниже перечислены xpath, которые я сохранил в файле File:

 URL = https://testexample.com Email = //*[@id='j_username'] Pwd = html/body/div[2]/form/input[2] Submit = html/body/div[2]/a/span/span/span WellCometoTestingWorld = //*[@id='app-banner']/div[1]/div/h2 

И это, как я сохранил данные теста в файле excel:

 Column1 Column2 UserName Password 

И вот мой файл testng.xml:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="2" parallel="tests" > <test name="AllTest"> <classes> <class name="com.Test1.StartTest"> </class> </classes> </test> </suite> 

Ниже приведен мой код:

 package com.access; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Properties; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import jxl.Sheet; import jxl.Workbook; public class Curam { static WebDriver driver; Workbook wb; Sheet sh1; int numrow; String username; String password; @Test(dataProvider = "testdata") public void setUp(ArrayList<String> sqldata, String uname, String password1) throws InterruptedException, FileNotFoundException, IOException { System.setProperty("webdriver.chrome.driver", "C:\\Directory\\chromedriver.exe"); driver = new ChromeDriver(); Properties obj = new Properties(); System.out.println("data>>>>>>"+sqldata); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\access\\Object.Properties"); obj.load(objfile); driver.get(obj.getProperty("URL")); driver.manage().window().maximize(); Thread.sleep(1000); driver.findElement(By.xpath(obj.getProperty("Email"))).clear(); Thread.sleep(1000); driver.findElement(By.xpath(obj.getProperty("Email"))).sendKeys(uname); // Thread.sleep(1000); // driver.findElement(By.xpath("//*[@id='next']")).click(); Thread.sleep(1000); driver.findElement(By.xpath(obj.getProperty("Pwd"))).clear(); Thread.sleep(1000); driver.findElement(By.xpath(obj.getProperty("Pwd"))).sendKeys(password1); Thread.sleep(1000); driver.findElement(By.xpath(obj.getProperty("Submit"))).click(); Thread.sleep(1000); Assert.assertEquals("Well Come to Testing World", driver.findElement(By.xpath(obj.getProperty("WellCometoTestingWorld"))).getText()); } @DataProvider(name = "testdata") public Object[][] TestDataFeed() { try { // load workbook wb = Workbook.getWorkbook(new File("C://File//Book3.xls")); // load sheet in my case I am referring to first sheet only sh1 = wb.getSheet(0); // get number of rows so that we can run loop based on this numrow = sh1.getRows(); } catch (Exception e) { e.printStackTrace(); } // Create 2 D array and pass row and columns Object[][] logindata = new Object[numrow][sh1.getColumns()]; // This will run a loop and each iteration it will fetch new row for (int i = 0; i < numrow; i++) { // Fetch first row username logindata[i][0] = sh1.getCell(0, i).getContents(); // Fetch first row password logindata[i][1] = sh1.getCell(1, i).getContents(); } // Return 2d array object so that test script can use the same return logindata; } } 

TestNG пытается ввести тестовые данные из метода DataProvider (TestDataFeed) в ваш метод тестирования (настройка). В вашем методе поставщика данных вы настроили два столбца, а именно имя пользователя и пароль. TestNG определяет его, проверяя массив двумерных объектов.

Когда TestNG пытается ввести 2 параметра в setupmethod, он видит 3 параметра и не работает, поэтому измените свой метод настройки, как показано ниже

  public void setUp(String uname, String password1) throws InterruptedException, FileNotFoundException, IOException 

Надеюсь это поможет

  • Как пропустить только один метод в Selenium
  • Как запустить условные тесты TestNG с данными из Excel
  • Передайте поставщика данных в провайдере данных
  • Чтение данных excel в зависимости от одного столбца и подачи в класс java
  • Как читать несколько наборов значений на листе Excel с помощью DataProvider в Selenium WebDriver с Java и TestNG
  • Мне нужно написать провал в excel в указанном столбце, используя POI
  • TestNG Неверное количество аргументов с DataProviders
  • Запись данных в Excel с использованием Apache POI с помощью системы TestNG
  • Как написать данные в Excel с помощью WebDriver с помощью Java с помощью платформы TestNg и Apache poi
  • Как перебирать лист excel с использованием testat-данных для набора данных?
  • Запись данных на Open excel sheet
  • Давайте будем гением компьютера.