Да, есть способ!Функцию clientScripts
можно использовать для отправки параметров.В документации очень хорошо написано, как вводить скрипты.Мне потребовалось некоторое время, чтобы понять, как использовать его из теста, так что, надеюсь, это приведет вас на правильный путь.
- Создайте объект данных с вашими параметрами
- ДобавитьJSON для небольшого блока кода JS, представляющего функцию
- Вставьте блок кода вашему бегуну / приспособлению / тесту с помощью установщика
.clientScripts
eval
код в вашем тесте и вуаля!У вас есть параметры
// Create the data object
let data = {aString: 'Yo!', aNumber: 345}
// Add it to a String value representing a JS function
const scriptContent = `
function getParameters() {
return ${JSON.stringify(data)};
}`
// Invoke the test runner with the code block as content
testcafe('localhost').then(cafe => {
cafe.createRunner()
.src('mytest.js')
.clientScripts({ content: scriptContent })
.run()
//...and so on...
})
Теперь, когда тест выполняется, функция getParameters существует внутри заголовка страницы .Этот код может быть оценен или вызван с помощью ClientFunction
или t.eval
:
let x = await t.eval( () => getParameters() );
console.log(x);
await t.expect(x.aString).eql('Yo!', 'Not Okey, mKay?')
Ответ с полностью рабочим примером можно найти здесь .