如何使用capybara-rspec获得焦点或点击iframe的主体内部

时间:2013-08-15 10:41:04

标签: iframe rspec triggers focus capybara

我正在尝试测试一个wysihtml5编辑器。用户将单击编辑器(显示编辑器控件)并开始键入。这将揭示更多要填补的领域。

这一切都按预期运行,但我正在尝试设置capybara脚本来复制此用户流。

  • 我需要在iframe主体内部聚焦,以获得要显示的iframe上方的字段ul和div。
  • 然后我需要在iframe体内输入(触发键盘)(然后应该在页面上加载更多的字段)。

这是结构:

<div class="wysiwyg-textarea">
    <ul id="prompt-content-12345-wysihtml5-toolbar" >
    <textarea id="prompt-content-12345"  >
    </textarea>
    <input type="hidden" name="_wysihtml5_mode" >
    <div>
    <iframe class="wysihtml5-sandbox"  >
        <html>
            <body class="no-border placeholder-as-label initials-title wysihtml5-editor placeholder" contenteditable="true" > …..
            </body>
        </html>
    </iframe>
</div>

我尝试过以下操作,并且不断收到下面提到的错误:

脚本:

#page.execute_script("parent.focus()")
#page.execute_script %Q{ $("self.editor.body.focus()")}
#page.execute_script %Q{ $(document).ready(.focus)}
#find(:xpath, "//form/div/div/div/div/iframe").click
#page.execute_script %Q{ $("//form/div[id='magic-box-prompts']").focus() }
#page.execute_script("editor.focus()")
#page.execute_script %Q{ $("body").trigger("click")}
#page.execute_script %Q{ $(iframe.contentWindow.focus()}
#page.execute_script %Q{ $(.contentWindow.focus()}
#page.execute_script %Q{ $(this.iframe.contentWindow.document.body.focus()}
#page.driver.browser.frame_focus('iframe')
#var editor_body = (".wysihtml5-sandbox").document.body
#page.execute_script %Q{ $(editor_body).keyup(function() { console.log($(this).text()) }) }
#find('.ta-wrapper.wysiwyg-textarea').click
#page.execute_script %Q{ $('.wysiwyg-textarea').trigger()}
#page.execute_script %Q{ $('.wysiwyg-textarea').data("wysihtml5").editor.setValue('this is a text') }
#page.execute_script %Q{ $('body.no-border.placeholder-as-label.mb-title.wysihtml5-editor.placeholder', $('iframe.wysihtml5-sandbox').contents()).on('keyup')}
#page.execute_script %Q{$('iframe').contents().find('body').attr('contenteditable', true).on( 'keyup',function() { }) }
#page.execute_script %Q{$(".mb-input").focus().trigger('keyup')}
#page.execute_script %Q{$('body.wysihtml5-editor', $('iframe.wysihtml5-sandbox').contents()).trigger('keyup')}
#page.execute_script %Q{ $("window.editor.composer.element").focus().trigger("keyup") }

错误:

Failure/Error: *name of the script*
     Selenium::WebDriver::Error::JavascriptError:
       $(...) is null

0 个答案:

没有答案