根据大小在空手道 UI 自动化中循环步骤

根据大小在空手道 UI 自动化中循环步骤

我有一个空手道 UI 功能文件

问题:- 在文件中我有一个步骤,其中有 n 个地址,单击每个地址后我会前进到下一个页面/操作。

我想动态地执行此操作,进入一个网址http://xxx.xxx.com在下一页的 URL 中列出了 3 个地址,可以从中选择一个,然后单击按钮进入下一页

And match temp.text contains 'Choose an address'

And karate.sizeOf(locateAll("//div[@class='addr-name']"))
   

其中,步骤“locate all”将给出页面上列出的地址数量,然后

And locateAll('.loc-name')[2].click()

根据页面上的地址位置,即 1、2 或 3,我需要选择它并执行其他操作。但是我无法动态地执行此操作。

我在 karate UI 中使用了 js,这样我就可以在 for 循环中获取大小并执行其中的其余步骤,即,

And def myfunc =
      """
        function(arg){
          for(var i = 1; i <= arg; i++){
             karate.locateAll('.addr-name')[i].click()
             karate.click("//button[@class='btn-submit loc-order']")
             karate.refresh()
             karate.waitForText('body', 'Home')
                         
             }
            }

然而它不起作用并抛出异常

org.graalvm.polyglot.PolyglotException: TypeError: invokeMember (locateAll) on com.intuit.karate.core.ScenarioBridge@27e32fe4 failed due to: Unknown identifier: locateAll
- <js>.:anonymous(Unnamed:3)

我完全不知所措。知道我在这里错过了什么吗?

相关内容