Вы можете сделать driver.eval()
, где аргументом является необработанный код JavaScript в виде строки. Я думаю, что этого достаточно для ваших нужд:
* match driver.eval("location.href") == webUrlBase + '/page-01'
* assert driver.eval('1 + 2') == 3
РЕДАКТИРОВАТЬ: движок JS для каратэ и движок Browser JS отличается и нет никакой связи. Поэтому вы должны передать JS как необработанные строки в driver.eval()
, вот пример, который работает для отправки формы.
* def getSubmitFn =
"""
function(formId) {
return "document.getElementById('" + formId + "').submit()"
}
"""
* def temp = getSubmitFn('eg02FormId')
* print temp
* driver.eval(temp)
РЕДАКТИРОВАТЬ: Я только что вспомнил, * driver.eval()
является действительным, не нужно делать * eval karate.eval()
Обычно то, что вы передаете driver.eval()
, может быть простым, но оно должно быть строкой, и вы не можете использовать переменные каратэ (вы должны жестко их кодировать при динамическом создании JS). Вы можете использовать объекты и функции DOM. Вы можете иметь несколько операторов JS, разделенных ;
.