将javascript变量保存到cucumber变量
我用黄瓜配小黄瓜。但不幸的是,我需要使用JavaScript从服务器获取一些数据 问题:如何将JavaScript请求结果保存到cucumber变量,以便在后续步骤中重用结果 代码:将javascript变量保存到cucumber变量,javascript,ruby,cucumber,gherkin,Javascript,Ruby,Cucumber,Gherkin,我用黄瓜配小黄瓜。但不幸的是,我需要使用JavaScript从服务器获取一些数据 问题:如何将JavaScript请求结果保存到cucumber变量,以便在后续步骤中重用结果 代码: Then(/^I load all stuff$/) do script = "(function run(){ var url = 'localhost:8o8o/getStuff'; $.ajax({url: url}).then(function(res) { //PROBL
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
script=“$.ajax({url:'…')).then(函数(res){
$('').attr({
键入:“隐藏”,
id:‘foo’,
名称:'酒吧',
值:JSON.stringify(res)
}).附录(“形式”);
});"
第页。评估_脚本(脚本)
等等
res=page.find('#foo',可见:false)。值
可见,它将隐藏的输入元素添加到字符串化值为
res
的元素中。然后我等待ajax执行。然后我在第页找到了它的价值。您可以使用LocalStorage,至少在Chromedriver中:
page.execute_script 'localStorage.setItem("foo", JSON.stringify(res));'
wait_for_ajax
res = page.driver.browser.local_storage['foo']
作为一种变体,将
res
设置到隐藏字段中,然后以通常的方式获取其值。@YevgeniyAnfilofyev抱歉,但是res
是主干。集合。我无法将其推到输入框,但您可以将res
字符串化。类似于JSON.stringify(res)
。