系统
OSX v10.13.4 / Elixir v1.6.5 / OTP 19 / Phoenix 1.3.2 / Wallaby 0.19.2 / PhantomJS 2.1
问题
以下代码适用于测试
execute_script(session, "localStorage.setItem('test', 'foo'); return localStorage.getItem('test');")
但是,如果我调用与我的 Phoenix 应用程序get_test()
内部调用的函数中完全相同的方法app.js
function get_test() {
localStorage.setItem('test', 'foo');
return localStorage.getItem('test');
}
window.get_test = get_test
并在我的测试套件中运行以下
execute_script(session, "return get_test();")
我明白了{:error, :obscured}
我已经在相同的代码上尝试过使用 selenium 并且它可以工作。但是,出于某种原因,使用 PhantomJS 似乎找不到我们自己创建的函数。
我错过了什么吗?我确实注意到在小袋鼠的 execute_script 测试中没有调用专门创建的函数的测试。
其中我添加了以下内容以local_storage_test
验证我不会发疯
@function_script """
function get_tester() {
localStorage.setItem('tester', 'foo');
return localStorage.getItem('tester');
}
return get_tester();
"""
session
|> visit("index.html")
|> execute_script(@function_script, fn(value) -> send self(), {:callback, value} end)
assert_received {:callback, "foo"}
它通过了。这显然是我的应用程序有问题。或者幻影配置也许。
更新:
虽然没有直接提及 - 我已将其范围缩小到libsodim无法使用phantomjs正确加载。回到调试的基础。JS写的没什么问题。积极的一面是,我现在拥有一个很酷的测试库和一些很酷的测试工具。