0
我有一個iframe這是一種形式的目標改變了:斷言高度已使用水豚
<form target="preview">
<textarea name="content"></textarea>
</form>
<iframe name="preview"></iframe>
當在文本區域的用戶類型(我省略了爲了簡潔去抖動碼的形式被提交):
$('textarea').keyup(function() {
// debouncer ensures this happens at *most* every two seconds
$('form').submit();
});
而且我這使iframe的高度腳本調整到它的內容:
$('iframe').load(function() {
var height = $('body', $(this).contents()).height();
$(this).height(height);
});
現在我正在編寫一個功能規格來聲明實際發生的高度調整。我已經確定我需要使用evaluate_script
來獲得iframe的高度。所以,從理論上說,我的天賦應該是這個樣子:
def preview_iframe_height
page.evaluate_script('$("iframe").height()')
end
scenario 'preview grows to content', js: true do
initial_height = preview_iframe_height
fill_in('Content', with: 'some content')
expect(preview_iframe_height).to be > initial_height
end
但是,此代碼不會等待重新填充的iframe請求,總是失敗。我知道水豚非常善於利用像have_content
這樣的匹配器來等待內容出現,但我不知道如何去等待高度發生變化。有任何想法嗎?
我的測試套件:
- RSpec的
- 水豚
- 騷靈
您可能會發現此鏈接有幫助: http://robots.thoughtbot.com/automatically-wait-for-ajax-with-capybara它是關於等待ajax完成,但你可以適應它等待,直到你的jQuery完成調整大小,然後再檢查高度, – 2014-09-23 23:55:12
您可能也會發現這也很有幫助:http://animalssittingoncapybaras.tumblr.com/它會讓您放心解決問題。 – Jake 2014-09-23 23:57:19