Karate中如何创建带参数的Feature并实现调用?
Karate 带参数Feature/函数的正确实现方法
方式一:独立Feature文件(跨用例复用)
被调用的Feature(createForm.feature)
Feature: 填充表单名称输入框 Scenario: 接收参数并填充输入框 # 直接使用传入的name参数,填充指定定位器的输入框 And input(formNameTextBoxLocator, '#(name)')
调用方代码
需先定义输入框的定位器,再调用Feature传递参数:
# 定义名称输入框的定位器(根据实际DOM结构调整) * def formNameTextBoxLocator = 'input[name="name"]' # 调用带参数的Feature,传入name值 * call read('classpath:/WEB/Forms/createForm.feature') { name: 'Peter' }
如果想让Feature更通用,支持不同输入框,可把定位器也作为参数传递:
通用版createForm.feature
Feature: 通用表单输入填充 Scenario: 填充指定输入框 And input('#(locator)', '#(value)')
调用方式
* call read('classpath:/WEB/Forms/createForm.feature') { locator: 'input[name="name"]', value: 'Peter' }
方式二:本地函数(当前Feature内复用)
如果偏好类似函数的写法,可直接在当前Feature中定义函数:
# 定义填充名称输入框的函数 * def textInputName = function(name) { input('input[name="name"]', name) } # 调用函数 * textInputName('Peter')
原代码问题说明
你之前写的input(formNameTextBoxLocator, { title: '#(name)' })有误,Karate的input API针对单个输入框时,第二个参数直接传文本值即可,无需包装成对象。只有批量填充多个表单字段时,才需要传入键值对对象(键为字段定位器或名称,值为输入内容)。
内容的提问来源于stack exchange,提问作者Andrei Vartic
相关产品推荐
相关产品推荐

