gpt4 book ai didi

java - 从 Selenium 中的数据提供程序类传递值时出现 'argument type mismatch' 错误

转载 作者:行者123 更新时间:2023-11-29 04:40:38 26 4
gpt4 key购买 nike

我在尝试使用@dataprovider 类将 excel 表中的少数值传递给页面对象类中的少数方法时遇到“参数类型不匹配”错误。依次在@test 类中调用这些方法。你能帮我解决这个问题吗?代码已在下面提到。

数据提供者

@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<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;
}

页面对象

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<WebElement> cartRows = cartTable.findElements(By.tagName("tr"));

//Product name
WebElement prodRow = cartRows.get(1);
List<WebElement> 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<WebElement> 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);
}
}

}

测试类

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);

}

}

错误:

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.0, "Magic Mouse", 1.0, "$150", "$150") java.lang.IllegalArgumentException: argument type mismatch

实际上,在方法 eCommerceProduct() 中,您期望参数为 intStringintString, String 而实际参数作为 double, String, double, 字符串字符串

因此,您应该将方法 eCommerceProduct() 更改为预期参数:-

public void eCommerceProduct(double browser, String product, double quantity, String prices, String totalPrices) {
-------
-------
}

已编辑:-

Running: C:\Users\chetan.k.thimmanna\AppData\Local\Temp\testng-eclips‌​e--1620381105\testng‌​-customsuite.xml 1 FAILED: eCommerceProduct(2, "Magic Mouse", 1, "$150", "$150") java.lang.NullPointerException at qaToolsECommerceExcel.QaToolsECommercePageObjects.setBrowser‌​(QaToolsECommercePag‌​eObjects.java:42)

发生此错误是因为您在 eCommerceProduct() 方法中调用 QaToolsECommercePageObjects.setBrowser(browser); 并将 browser 值传递给 intdouble 而在 QaToolsECommercePageObjects.setBrowser(int browser) 方法中,您将其作为 if(browser == '1') 表示在错误的字符串中。

您应该修改您的 QaToolsECommercePageObjects.setBrowser(int browser) 方法如下:-

public class QaToolsECommercePageObjects {

WebDriver driver;

public void setBrowser(int browser){
WebDriver driver
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);
}
-----
-----
}

关于java - 从 Selenium 中的数据提供程序类传递值时出现 'argument type mismatch' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com