如何测试 window.status 变量

how to test window.status variable

我正在使用 wkhtmlpdf 库从 HTML 页面转换 pdf。此页面依赖大量 javascript 函数(ajax 调用,google 映射),因此我不得不使用 --window-status--javascript-delay 选项。当一切都完成时,我正在设置值 window.status="ready_to_print;"。它工作正常,pdf 正在按应有的方式呈现。

现在我想在 rails unit/integration 上创建一个 ruby 测试来检查 HTML 页面是否已呈现到正确的状态。我如何使用 rpec、capybara 或任何其他方式对此进行测试?

我不知道 selenium ruby 绑定中有一个暴露的方法,但是 watir DSL 有一个 Browser::status 方法,它的实现如下,应该做诀窍:

def status
  execute_script 'return window.status;'
end

当您想访问您使用的 JS 事物的值时使用 Capybara evaluate_script。在这种情况下,这意味着

evaluate_script('window.status')

如果你想等待它成为某个值,你可以将它包装在一个循环中(可能有超时),或者如果你现在只想验证它是一个特定值

expect(evaluate_script('window.status')).to eq 'ready_to_print'