亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Selenium 中的數據提供程序不匹配錯誤與 TestNG 和 Java

Selenium 中的數據提供程序不匹配錯誤與 TestNG 和 Java

料青山看我應如是 2022-06-15 17:23:05
您能否就從 Selenium Java 實現 Excel 流時出現的數據提供程序不匹配錯誤的可能原因提出建議。org.testng.internal.reflect.MethodMatcherException: Data provider mismatchMethod: CreateFlow([Parameter{index=0, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=1, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=2, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=3, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=4, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=5, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=6, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=7, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=8, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=9, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=10, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=11, type=java.lang.String, declaredAnnotations=[]}])Arguments: [(org.apache.poi.xssf.usermodel.XSSFCell) AakashAuto,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) dummy,(org.apache.poi.xssf.usermodel.XSSFCell) gmaAIL.COM,(org.apache.poi.xssf.usermodel.XSSFCell) asdsad,(org.apache.poi.xssf.usermodel.XSSFCell) sads,(org.apache.poi.xssf.usermodel.XSSFCell) asd,(org.apache.poi.xssf.usermodel.XSSFCell) asd,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) asd]    at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:45)    at org.testng.internal.Parameters.injectParameters(Parameters.java:796)    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:983)
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

org.testng.internal.reflect.MethodMatcherException: 

Data provider mismatch

Method: CreateFlow([Parameter{index=0, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=1, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=2, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=3, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=4, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=5, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=6, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=7, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=8, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=9, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=10, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=11, type=java.lang.String, declaredAnnotations=[]}])

Arguments: [(org.apache.poi.xssf.usermodel.XSSFCell) AakashAuto,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) dummy,(org.apache.poi.xssf.usermodel.XSSFCell) gmaAIL.COM,(org.apache.poi.xssf.usermodel.XSSFCell) asdsad,(org.apache.poi.xssf.usermodel.XSSFCell) sads,(org.apache.poi.xssf.usermodel.XSSFCell) asd,(org.apache.poi.xssf.usermodel.XSSFCell) asd,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) Dummy,(org.apache.poi.xssf.usermodel.XSSFCell) asd]

    at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:45)

    at org.testng.internal.Parameters.injectParameters(Parameters.java:796)

    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:983)

    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)

    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)

    at org.testng.TestRunner.privateRun(TestRunner.java:648)

    at org.testng.TestRunner.run(TestRunner.java:505)

    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)

    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)

    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)

    at org.testng.SuiteRunner.run(SuiteRunner.java:364)

    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)

    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)

    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)

    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)

    at org.testng.TestNG.runSuites(TestNG.java:1049)

    at org.testng.TestNG.run(TestNG.java:1017)

    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)

    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)

    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

根據上述錯誤,該createFlow()方法期望 String 作為參數,但您傳遞的Cell是不可接受的。


試試下面的修改代碼:


public static Object[][] TestData() {

    sheet = book.getSheetAt(0);

    int rowCount = sheet.getLastRowNum();

    int cellCount = sheet.getRow(0).getLastCellNum();

    Object[][] data = new Object[rowCount][cellCount];

    for (int i = 0; i < rowCount; i++) {

        for (int j = 0; j < cellCount; j++) {

            // Call 'getStringCellValue()' here instead of using just 'getCell()'

            data[i][j] = sheet.getRow(1).getCell(j).getStringCellValue().trim();

        }

    }

    return data;

}

您需要調用該getStringCellValue()方法來獲取字符串數據。


更新 :


如果您嘗試使用getStringCellValue().


為避免此異常,您可以'在 Excel 工作表的數字單元格中附加撇號作為前綴。


假設您在 excel 中有一些如下格式的數據:


| Ali   |

| 123   |

| Puppy |

你可以得到Ali,Puppy使用的值,getStringCellValue()但你不能得到123,因為它是數字所以嘗試在 excel 中追加'并按123Enter 鍵。它看起來像這樣,你不會得到那個錯誤。


| Ali   |

| '123  |

| Puppy |

如果您想獲取數據而不考慮從 excel 提供的數據類型并且您不想追加,'那么您需要執行以下操作:


public static Object[][] TestData() {

    sheet = book.getSheetAt(0);

    int rowCount = sheet.getLastRowNum();

    int cellCount = sheet.getRow(0).getLastCellNum();

    Object[][] data = new Object[rowCount][cellCount];

    for (int i = 0; i < rowCount; i++) {

        for (int j = 0; j < cellCount; j++) {

            switch (sheet.getRow(1).getCell(j).getCellType()) {

               case Cell.CELL_TYPE_NUMERIC:

                   // Call 'getNumericCellValue()' here instead of using just 'getCell()'

                   data[i][j] = sheet.getRow(1).getCell(j).getNumericCellValue();

                   break;

               case Cell.CELL_TYPE_STRING:

                   // Call 'getStringCellValue()' here instead of using just 'getCell()'

                   data[i][j] = sheet.getRow(1).getCell(j).getStringCellValue().trim();

                   break;

            }

        }

    }

    return data;

}

Cell從import org.apache.poi.ss.usermodel.Cell;包中導入。


我希望它有幫助...


查看完整回答
反對 回復 2022-06-15
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

@DataProvider(name = "yourDPname")

public Object[][] getData() {

    Object[][] data = TestUtil.TestData();

    return data;

}


@Test(dataProvider = "yourDPname")

public void CreateFlow(String firstName, String lastName, String address,

        String email, String DOB, String MobileNumber, String HomeNumber,

        String PIN, String id, String secondID, String AccountID, String number)

        throws IOException, InterruptedException {

    //Printing all these values inside this method }

}

也許嘗試為您的數據提供者分配名稱并替換數據提供者名稱而不是方法名稱。


查看完整回答
反對 回復 2022-06-15
  • 2 回答
  • 0 關注
  • 321 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號