我用小 cucumber 和 cucumber 。但不幸的是我需要使用 JavaScript 从服务器获取一些数据。
问题: 如何将 JavaScript 请求结果保存到 cucumber 变量以便能够在后续步骤中重用该结果?
代码:
Then(/^I load all stuff$/) do
script = "(function run(){
var url = 'localhost:8o8o/getStuff';
$.ajax({url: url}).then(function(res) {
//PROBLEM: how to save 'res' variable to Ruby variable?
});
})()".gsub(/[\t\r\n]/, '');
@browser.execute_script(script)
end
最佳答案
我是这样做的:
script = "$.ajax({url: '...'}).then(function(res){
$('<input>').attr({
type: 'hidden',
id: 'foo',
name: 'bar',
value: JSON.stringify(res)
}).appendTo('form');
});"
page.evaluate_script(script)
wait_for_ajax
res = page.find('#foo', visible: false).value
所以您会看到,它将隐藏的输入元素附加到具有字符串化值 res
的表单元素。然后我等待ajax执行。然后我发现它在页面上的值(value)。
关于javascript - 将 javascript 变量保存到 Cucumber 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068404/