Как вернуть значение при использовании execute script в capybara?
у меня есть очень простая строка в тесте, которая вызывает execute script следующим образом:
puts page.execute_script("return somefunction();").to_i.inspect
и в javascript у меня есть такая функция:
function somefunction(){
console.log("test");
return 999;
}
"тест" из журнала консоли выходит из системы, поэтому он работает...
глядя на журналы при запуске теста, execute_script возвращает 0 не 999, поэтому в rspec я не могу получить возвращаемое значение из функции, как сделать страницу.execute_script возвращать это значение от функции?
1 ответов
водитель полтергейст призвана вернуть nil для execute_script
:
def execute_script(script)
browser.execute(script)
nil
end
Poltergeist вернет значение, только если вы используете evaluate_script
:
def evaluate_script(script)
browser.evaluate(script)
end
Capybara имеет соответствующие методы для каждого-ie Session#execute_script
и Session#evaluate_script
. Ваш код должен работать, если вы переключаетесь на использование evaluate_script
(и, как указывает @AndreyBotalov, вам также нужно удалить return
):
puts page.evaluate_script("somefunction();").to_i.inspect