Автоматизация пользовательского интерфейса - метод определения шага не совпадает с Java Interop - PullRequest
1 голос
/ 18 марта 2020

Каратэ Взаимодействие прекрасно работает с моими простыми примерами в скрипте, однако сталкивается с проблемой этого метода c. Я что-то здесь упускаю? Благодарим вас за помощь.

Шаги из примера сценария ios

* 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])

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

Вывод на консоль:

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

ОБНОВЛЕНИЕ: Просто примечание. Я попробовал другой способ, изменив сигнатуру метода, чтобы она соответствовала вызову, как показано ниже, однако не повезло.

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

1 Ответ

0 голосов
/ 18 марта 2020

Да, каратэ можно спутать со сложными JS выражениями, здесь я думаю, что квадратные скобки - это проблема. Я предлагаю 2 варианта:

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

или 2 шага:

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

Я думаю, вы начали чрезмерно усложнять свои тесты. Вам действительно нужно так много утилит. Просто постарайтесь сделать свои тесты читабельными, даже если это будет означать, что вы немного повторитесь. Ссылайтесь на этот ответ - особенно ссылки: { ссылка }

...