UI Automation - no puede competir con el método paso a la definición de interoperabilidad con Java

Vikas Thange:

Karate interoperabilidad funciona muy bien con mis ejemplos sencillos en escritura sin embargo frente a un problema con este método específico. ¿Me estoy perdiendo de algo? Aprecio tu ayuda.

Pasos de escenarios de ejemplo

* configure driver = { type: 'chromedriver', executable: '/Users/vxt82/Apps/chromedriver', showDriverLog: true , readTimeout: 120000, httpConfig: { readTimeout: 120000 }}
* driver 'http://XXXXXX.XXXX'
* def searchLocators = read('classpath:folder-name/locators/search-page.json').SearchPage.search
* table searchData
  | txtNumber| txtSsn  |  btnSearch | dataExpectedValues |
  | 'L02'| 'XXXXXX' | "-"   | ["999XYZ","L02","LAST_PQ02","FIRST_PQ02","3211","P","","","","","","01/01/2020","01/31/2020","","Update","Passed","View"]|
  | 'L02'| 'XXXXXX' | "-"   | ["999XYZ","L02","LAST_PQ02","FIRST_PQ02","3211","P","","","","","","01/01/2020","01/31/2020","","Update","Passed","View"]|
* utils.ui.printClass(driver)
* utils.ui.printClass(searchLocators)
* utils.ui.printClass(searchData[0])
* utils.ui.performAutomatedFormFilling(driver,searchLocators, searchData[0])

Métodos de Java:

public static void performAutomatedFormFilling(WebDriver driver, LinkedHashMap<Object,Object> locators, LinkedHashMap<Object,Object> dataToSearch){
.....
}
public static void printClass(Object o){
    System.out.println("Class Name: "+ o.getClass());
}

Salida de consola:

Class Name: class com.intuit.karate.driver.chrome.ChromeWebDriver
Class Name: class java.util.LinkedHashMap
Class Name: class java.util.LinkedHashMap

sample.feature:68 - no step-definition method match found for: utils.ui.performAutomatedFormFilling(driver,searchLocators, searchData[0])

ACTUALIZACIÓN: Sólo una nota. Probé otro modo modificando método de firma para que coincida con la llamada de la siguiente manera, sin embargo no hubo suerte.

public static void performAutomatedFormFilling(Object driver, Object locators, Object dataToSearch){
    .....
} 
Peter Thomas:

Sí, el Karate se puede confundir con expresiones complejas JS, aquí creo que los corchetes son el problema. Propongo 2 opciones:

* (utils.ui.performAutomatedFormFilling(driver,searchLocators, searchData[0]))

O 2 pasos:

* def searchArg = searchData[0]
* utils.ui.performAutomatedFormFilling(driver, searchLocators, searchArg)

Creo que ha empezado a complicar excesivamente sus pruebas. ¿Usted realmente necesita tantas utilidades. Sólo tratar de hacer sus pruebas de lectura, incluso si esto significa repetir siempre lo mismo un poco. Consulte esta respuesta - especialmente los vínculos: https://stackoverflow.com/a/60562941/143475

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=318831&siteId=1
Recomendado
Clasificación