我已經構建了一個簡單的Gem在場景失敗時爲Capybara Webkit製作截圖,並且它還保存當前頁面的HTML文件,而不管您使用的是哪種Capybara驅動程序。但是,我遇到了一個我看不到克服的問題,只要Gem中的代碼被調用,page.body
就是空的。但是,當我在Rails應用程序中使用完全相同的代碼時,page.body
不是空的。發佈使用After塊的Cucumber- * gem
寶石代碼是在Github在https://github.com/mattheworiordan/capybara-screenshot
如果你看一看,你會看到,我有一個lib/capybara-screenshot/world.rb文件,該文件訪問page.body並保存的內容出來。問題是,當寶石訪問page.body,page.body是空的,只是包含: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
我在gem's lib root file包括world.rb,所以我不能真正看到我做錯了什麼。
奇怪的是,如果我把一個後面的塊放入我的sample Rails app env.js file訪問頁面.body有正確的HTML,所以看起來在Gem中的{我的代碼}在頁面被釋放後執行。
寶石代碼爲https://github.com/mattheworiordan/capybara-screenshot,寶石安裝在https://rubygems.org/gems/capybara-screenshot。您可以通過簡單運行黃瓜來快速重現此問題的示例Rails應用程序位於https://github.com/mattheworiordan/capybara-screenshot-test
我覺得這個答案很簡單,但由於某種原因,我看不到它。我很感激您可以提供的任何幫助。