无法使用 leftOf select 复选框

Unable to select the check box using leftOf

我正在尝试单击留给文本(作为服务器)的复选框。

我的 HTML 代码如下所示。

<td>
     <input type="checkbox" ng-model="asset.isChecked" ng-change="selectEntity(filteredTableElements,asset.id)" class="ng-valid ng-dirty ng-valid-parse ng-empty ng-touched">
</td>                                       
<td class="ng-binding">as-server</td>

上述代码段的 Ui

我浏览了空手道文档并尝试了多种方案,但其中 none 能够找到复选框。

场景 1:

* leftOf('{}as-server').find('input[type="checkbox"]').click()

输出:评估 (js) 失败:leftOf('{}as-server').find('input[type="checkbox"]').click(),java.lang.RuntimeException:无法找到:{}as - 服务器,左侧,输入 [type="checkbox"] 堆栈跟踪:com.intuit.karate.driver.ElementFinder.find(ElementFinder.java:120)

场景 2:

* leftOf('{}as-server').click()

输出:评估 (js) 失败:leftOf('{}as-server').click(),java.lang.RuntimeException:无法找到:{}as-server,LEFT,INPUT 堆栈跟踪:com.intuit.karate.driver.ElementFinder.find(ElementFinder.java:120)

我是不是漏掉了什么?在空手道中还有其他方法吗?

谢谢!!

UI 测试并不容易。可能有很多原因,例如您正在使用的 Angular 可能会在页面上做一些额外的事情并隐藏元素区域。 “友好的定位器”在那里是为了方便,但如果它们不能开箱即用,您应该花一些时间进行故障排除。如果您遵循这个过程,我们可以改进框架,那就太好了:https://github.com/intuit/karate/tree/develop/examples/ui-test

所以也许你应该尝试另一种方法,而空手道会给你很多。例如:

* locate('{}as-server').previousSibling.firstChild.click()