Я столкнулся с ошибкой «несоответствие типа аргумента», пытаясь передать несколько значений из листа excel, используя класс @dataprovider нескольким методам в классе объектов страницы , В свою очередь эти методы вызывают в классе @test. Не могли бы вы помочь мне в этом вопросе. Код указан ниже.Ошибка «несоответствие типа аргумента» при передаче значений из класса dataprovider в Selenium
DataProvider
@DataProvider(name="ProductInfo")
public static Object[][] productInfoDataprovider() throws Throwable {
\t File file = new File("C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/QAToolsECommerce/ECommerce_Data.xlsx");
\t FileInputStream fis = new FileInputStream(file);
\t XSSFWorkbook wb = new XSSFWorkbook(fis);
\t XSSFSheet sheet = wb.getSheet("Sheet1");
\t int lastRowNum = sheet.getLastRowNum();
\t Object[][] obj = new Object[lastRowNum][5];
\t for(int i=0; i<lastRowNum; i++){
\t \t
\t \t XSSFRow row = sheet.getRow(i+1);
\t \t obj[i][0]= row.getCell(0).getNumericCellValue();
\t \t obj[i][1]= row.getCell(1).getStringCellValue();
\t \t obj[i][2]= row.getCell(2).getNumericCellValue();
\t \t obj[i][3]= row.getCell(3).getStringCellValue();
\t \t obj[i][4]= row.getCell(4).getStringCellValue();
\t }
\t \t fis.close();
\t return obj;
}
PageObjects
public class QaToolsECommercePageObjects {
\t
\t WebDriver driver;
\t
\t /*Method to launch the browser and select the browser type */
\t public void setBrowser(int browser){
\t \t
\t \t if(browser == '1'){
\t \t \t driver = new FirefoxDriver();
\t \t }else if(browser == '2'){
\t \t \t System.setProperty("webdriver.chrome.driver", "C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/chromedriver.exe");
\t \t \t driver = new ChromeDriver();
\t \t }else if(browser == '3'){
\t \t \t System.setProperty("webdriver.ie.driver", "C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/IEDriverServer.exe");
\t \t \t driver = new InternetExplorerDriver();
\t \t }
\t \t //Maximize the window
\t \t driver.manage().window().maximize();
\t \t
\t \t driver.get("http://store.demoqa.com/");
\t \t //driver.get("http://toolsqa.com/");
\t \t
\t \t //browser load time
\t \t driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
\t }
\t
\t /* Searches the product required to purchase */
\t public void searchProduct(String product){
\t \t
\t \t driver.findElement(By.name("s")).sendKeys(product);
\t \t driver.findElement(By.name("s")).sendKeys(Keys.ENTER);
\t \t //driver.findElement(By.linkText("Product Category")).click(); \t
\t }
\t
\t
\t /* Verifies the product name in the product search result and adds the product to the cart*/
\t public void productVerify(String product){
\t \t
\t \t String productValue = driver.findElement(By.id("grid_view_products_page_container")).getText();
\t \t boolean val = productValue.contains(product); //Value from excel sheet
\t \t if(val == true){
\t \t \t
\t \t \t System.out.println("The product searched is found :" +productValue);
\t \t \t //Click on add to cart
\t \t \t driver.findElement(By.name("Buy")).click();
\t \t \t //Click on Go to check out
\t \t \t driver.findElement(By.className("go_to_checkout")).click(); \t
\t \t }else
\t \t {
\t \t \t System.out.println(" The product searched is not found :" +productValue);
\t \t }
\t \t
\t }
\t
\t
\t /* Verifies the product name, quantity, price and total price of the product */
\t
\t public void checkoutCartVerify(String product, int quantity, String prices, String totalPrices){
\t \t
\t \t WebElement cartTable = driver.findElement(By.className("checkout_cart"));
\t \t List<WebElement> cartRows = cartTable.findElements(By.tagName("tr"));
\t \t
\t \t //Product name
\t \t WebElement prodRow = cartRows.get(1);
\t \t List<WebElement> prodCols = prodRow.findElements(By.tagName("td"));
\t \t WebElement prodName = prodCols.get(1);
\t \t String oriProdName = prodName.findElement(By.tagName("a")).getText();
\t \t
\t \t //Comparing product name
\t \t if(oriProdName.equals(product)){
\t \t \t System.out.println("The Product searched and added to the cart is correct: "+oriProdName);
\t \t }else
\t \t {
\t \t \t System.out.println("The product searched and added to the cart is incorrect: "+oriProdName);
\t \t }
\t \t
\t \t
\t \t //Quantity
\t \t WebElement quantityCombo = prodCols.get(2).findElement(By.tagName("form"));
\t \t List<WebElement> quantityVals = quantityCombo.findElements(By.tagName("input"));
\t \t String prodQuantity = quantityVals.get(0).getAttribute("value");
\t \t int pq = Integer.parseInt(prodQuantity);
\t \t //Comparing product quantity
\t \t if(pq == quantity){
\t \t \t System.out.println("The Product quantity added to the cart is correct: "+pq);
\t \t }else
\t \t {
\t \t \t System.out.println("The product quantity added to the cart is incorrect: "+pq);
\t \t }
\t \t
\t \t //Price
\t \t String price = prodCols.get(3).getText();
\t \t String[] priceSplit = price.split("\\.");
\t \t String prodPrice = priceSplit[0];
\t \t String priceFrac = priceSplit[1];
\t \t System.out.println(price);
\t \t
\t \t
\t \t //Comparing price of the quantity
\t \t if(priceFrac.equals("00")){
\t \t \t if(prodPrice.equals(prices)){
\t \t \t \t System.out.println("The Product price added to the cart is correct: "+prodPrice);
\t \t \t }else{
\t \t \t \t System.out.println("The product price added to the cart is incorrect: "+prodPrice);
\t \t \t }
\t \t \t
\t \t }else
\t \t {
\t \t \t if(price.equals(prices)){
\t \t \t \t System.out.println("The Product price added to the cart is correct: "+price);
\t \t \t }else{
\t \t \t \t System.out.println("The product price added to the cart is incorrect: "+price);
\t \t \t }
\t \t \t
\t \t }
\t \t
\t \t //Total Price
\t \t String totalPrice = prodCols.get(4).getText();
\t \t String[] totalpriceSplit = totalPrice.split("\\.");
\t \t String prodTotalprice = totalpriceSplit[0];
\t \t String prodpriceFrac = totalpriceSplit[1];
\t \t System.out.println(totalPrice);
\t \t
\t \t //Comparing Total Price of the quantity
\t \t if(prodpriceFrac.equals("00")){
\t \t \t if(prodTotalprice.equals(totalPrices)){
\t \t \t \t System.out.println("The Product Total price added to the cart is correct: "+prodTotalprice);
\t \t \t }else{
\t \t \t \t System.out.println("The product Total price added to the cart is incorrect: "+prodTotalprice);
\t \t \t }
\t \t }else
\t \t {
\t \t \t if(totalPrice.equals(totalPrices)){
\t \t \t \t System.out.println("The Product Total price added to the cart is correct: "+totalPrice);
\t \t \t }else{
\t \t \t \t System.out.println("The product Total price added to the cart is incorrect: "+totalPrice);
\t \t \t }
\t \t }
\t \t
\t }
Тест Класс
public class QaToolsECommerceTest {
@Test(dataProvider = "ProductInfo", dataProviderClass = QaToolsECommerceDataProvider.class)
public void eCommerceProduct(int browser, String product, int quantity, String prices, String totalPrices) {
\t QaToolsECommercePageObjects qaEpo = new QaToolsECommercePageObjects();
\t
\t qaEpo.setBrowser(browser);
\t qaEpo.searchProduct(product);
\t qaEpo.productVerify(product);
\t qaEpo.checkoutCartVerify(product, quantity, prices, totalPrices);
}
}
Ошибка:
FAILED: eCommerceProduct(2.0, "Magic Mouse", 1.0, "$150", "$150") java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)
Я пробовал вышеуказанное решение, старая ошибка решена. Но теперь я получаю «FAILED: eCommerceProduct (2,« Magic Mouse », 1,« $ 150 »,« $ 150 ») java.lang.NullPointerException '. В листе excel у меня есть только одна строка значений, является ли эта ошибка из-за этого? Пожалуйста, помогите мне. –
Не могли бы вы поделиться полной stacktrace ?? –
[TestNG] Запуск: C: \ Users \ chetan.k.thimmanna \ AppData \ Local \ Temp \ TestNG-затмение - 1620381105 \ TestNG-customsuite.xml FAILED: eCommerceProduct (2, "Magic Mouse" , 1, "$ 150", "150 $") java.lang.NullPointerException \t на qaToolsECommerceExcel.QaToolsECommercePageObjects.setBrowser (QaToolsECommercePageObjects.java:42) \t в qaToolsECommerceExcel.QaToolsECommerceTest.eCommerceProduct (QaToolsECommerceTest.java:13) \t на sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) \t at sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестный источник) –