title: Getting 'argument type mismatch' error while passing values from a dataprovider class in Selenium
body: <p>I'm facing 'argument type mismatch' error while trying to pass few values from the excel sheet using @dataprovider class to few methods in page objects class. In turn these methods are called in @test class. Can you please help me on this issue. The code has been mentioned below.</p>
  
  <p>DataProvider</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>@DataProvider(name="ProductInfo")
    public static Object[][] productInfoDataprovider() throws Throwable {
      
     File file = new File("C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/QAToolsECommerce/ECommerce_Data.xlsx");
     FileInputStream fis = new FileInputStream(file);
     XSSFWorkbook wb = new XSSFWorkbook(fis);
     XSSFSheet sheet = wb.getSheet("Sheet1");
     int lastRowNum = sheet.getLastRowNum();
     Object[][] obj = new Object[lastRowNum][5];
     for(int i=0; i&lt;lastRowNum; i++){
      
      XSSFRow row = sheet.getRow(i+1);
      obj[i][0]= row.getCell(0).getNumericCellValue();
      obj[i][1]= row.getCell(1).getStringCellValue();
      obj[i][2]= row.getCell(2).getNumericCellValue();
      obj[i][3]= row.getCell(3).getStringCellValue();
      obj[i][4]= row.getCell(4).getStringCellValue();
     }
    fis.close();
     return obj;
    }</code></pre>
  </div>
  </div>
  </p>
  
  <p>PageObjects</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>public class QaToolsECommercePageObjects {
   
   WebDriver driver;
   
   /*Method to launch the browser and select the browser type */
   public void setBrowser(int browser){
    
    if(browser == '1'){
     driver = new FirefoxDriver();
    }else if(browser == '2'){
     System.setProperty("webdriver.chrome.driver", "C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/chromedriver.exe");
     driver = new ChromeDriver();
    }else if(browser == '3'){
     System.setProperty("webdriver.ie.driver", "C:/Users/chetan.k.thimmanna/Documents/Selenium/Resources/IEDriverServer.exe");
     driver = new InternetExplorerDriver();
    }
    //Maximize the window
    driver.manage().window().maximize();
    
    driver.get("http://store.demoqa.com/");
    //driver.get("http://toolsqa.com/");
    
    //browser load time
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
   }
  
  
  
   
   /* Searches the product required to purchase */
   public void searchProduct(String product){
    
    driver.findElement(By.name("s")).sendKeys(product);
    driver.findElement(By.name("s")).sendKeys(Keys.ENTER);
    //driver.findElement(By.linkText("Product Category")).click(); 
   }
   
  
   
   /* Verifies the product name in the product search result and adds the product to the cart*/
   public void productVerify(String product){
    
    String productValue = driver.findElement(By.id("grid_view_products_page_container")).getText();
    boolean val = productValue.contains(product); //Value from excel sheet
    if(val == true){
     
     System.out.println("The product searched is found :" +productValue);
     //Click on add to cart  
     driver.findElement(By.name("Buy")).click();
     //Click on Go to check out
     driver.findElement(By.className("go_to_checkout")).click(); 
    }else
    {
     System.out.println(" The product searched is not found :" +productValue);
    }
    
   }
   
   
   /* Verifies the product name, quantity, price and total price of the product */
   
   public void checkoutCartVerify(String product, int quantity, String prices, String totalPrices){
    
    WebElement cartTable = driver.findElement(By.className("checkout_cart"));
    List&lt;WebElement&gt; cartRows = cartTable.findElements(By.tagName("tr"));
    
    //Product name
    WebElement prodRow = cartRows.get(1);
    List&lt;WebElement&gt; prodCols = prodRow.findElements(By.tagName("td"));
    WebElement prodName = prodCols.get(1);
    String oriProdName = prodName.findElement(By.tagName("a")).getText();
    
    //Comparing product name 
    if(oriProdName.equals(product)){
     System.out.println("The Product searched and added to the cart is correct: "+oriProdName);
    }else
    {
     System.out.println("The product searched and added to the cart is incorrect: "+oriProdName);
    }
    
    
    //Quantity
    WebElement quantityCombo = prodCols.get(2).findElement(By.tagName("form"));
    List&lt;WebElement&gt; quantityVals = quantityCombo.findElements(By.tagName("input"));
    String prodQuantity = quantityVals.get(0).getAttribute("value");
    int pq = Integer.parseInt(prodQuantity);
    //Comparing product quantity 
    if(pq == quantity){
     System.out.println("The Product quantity added to the cart is correct: "+pq);
    }else
    {
     System.out.println("The product quantity added to the cart is incorrect: "+pq);
    }
    
    //Price
    String price = prodCols.get(3).getText();
    String[] priceSplit = price.split("\\.");
    String prodPrice = priceSplit[0];
    String priceFrac = priceSplit[1];
    System.out.println(price);
    
    
    //Comparing price of the quantity 
    if(priceFrac.equals("00")){
     if(prodPrice.equals(prices)){
      System.out.println("The Product price added to the cart is correct: "+prodPrice);
     }else{
      System.out.println("The product price added to the cart is incorrect: "+prodPrice);
     }
     
    }else
    {
     if(price.equals(prices)){
      System.out.println("The Product price added to the cart is correct: "+price);
     }else{
      System.out.println("The product price added to the cart is incorrect: "+price);
     }
     
    }
    
    //Total Price
    String totalPrice = prodCols.get(4).getText();
    String[] totalpriceSplit = totalPrice.split("\\.");
    String prodTotalprice = totalpriceSplit[0];
    String prodpriceFrac = totalpriceSplit[1];
    System.out.println(totalPrice);
    
    //Comparing Total Price of the quantity
    if(prodpriceFrac.equals("00")){
     if(prodTotalprice.equals(totalPrices)){
      System.out.println("The Product Total price added to the cart is correct: "+prodTotalprice);
     }else{
      System.out.println("The product Total price added to the cart is incorrect: "+prodTotalprice);
     }
    }else
    {
     if(totalPrice.equals(totalPrices)){
      System.out.println("The Product Total price added to the cart is correct: "+totalPrice);
     }else{
      System.out.println("The product Total price added to the cart is incorrect: "+totalPrice);
     }
    }
    
   }</code></pre>
  </div>
  </div>
  </p>
  
  <p>Test Class</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>public class QaToolsECommerceTest {
    @Test(dataProvider = "ProductInfo", dataProviderClass = QaToolsECommerceDataProvider.class)
    
    public void eCommerceProduct(int browser, String product, int quantity, String prices, String totalPrices) {
     QaToolsECommercePageObjects qaEpo = new QaToolsECommercePageObjects();
     
     qaEpo.setBrowser(browser);
     qaEpo.searchProduct(product);
     qaEpo.productVerify(product);
     qaEpo.checkoutCartVerify(product, quantity, prices, totalPrices);
  
    }
  
  }</code></pre>
  </div>
  </div>
  </p>
  
  <p>Error:</p>
  
  <blockquote>
    <p>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)</p>
  </blockquote>