karate - 在 karate-core 中为可重用功能创建函数
问题描述
我在空手道之上构建了一个框架,并有几个可重用的功能(主要是 Javascript 和实用程序)。我们可以重用功能,但我想知道是否有一种方法可以使用 UI 功能的 Javascript 函数来包装对这些功能的调用。我认为它使测试更容易抽象出一些代码——就像用一些自定义函数扩展 DSL 一样。
我似乎能够使用 Karate DSL 中的功能来实现这一点,这些功能不属于 UI 自动化包/空手道核心,但不适用于 UI 功能。
例如,我有以下名为click.feature的可重用功能(可点击的“div”的解决方法,其中 .click() 似乎在 Web 驱动程序中不起作用):
Scenario:
Then def pos = position(__arg.selector)
And def x = Math.round(pos.x + pos.width/2)
And def y = Math.round(pos.y + pos.height/2)
And mouse().move(x, y).click()
以及下面的 JS 函数:
Scenario:
* def moveAndClick =
"""
function(selector) {
karate.call('click.feature', ( { selector : selector } ))
}
"""
当我尝试使用它时,我收到以下错误:
click.feature:5 - evaluation (js) failed: position(__arg.selector), javax.script.ScriptException: ReferenceError: "position" is not defined in <eval> at line number 1
这似乎仅限于 UI 功能,因为我尝试了assert或print关键字并且这些关键字有效。我错过了什么还是设计使然?
解决方案
您能否检查此问题并查看是否解决了您的问题:https ://github.com/intuit/karate/issues/1280 - 如果您可以从源代码构建并验证,那就太好了:https ://github.com/intuit /karate/wiki/开发者指南
因此,默认情况下,driver
直到您第一次调用 URL 时才定义对象。但是如果你想使用可重用的函数,它们必须使用karate.get('driver')
,然后你可以使用它来链接函数。
推荐阅读
- python - 发送电子邮件的 Django 联系表
- string - TCL 中的二进制格式化变量
- go - 如何将额外的参数传递给 Echo 多路复用器处理程序?
- css - 背景图片没有显示,因为我的 CSS 背景有问题
- tensorflow - 错误 tensorflow 2.3:变量未初始化。容器本地主机不存在
- mysql - 如何在 SQL 中针对不同条件使用 CASE
- c++ - 为什么我不能使用 chrono 库?
- azure - 有没有办法在最后一次成功时回滚 devops 管道?
- java - 如果字符串包含某个单词,我如何使用正则表达式跳过它
- angular - 为什么我需要上传我的文件两次才能将其放入数据库?