How to fill tinymce-rails editor with capybara and selenium?

后端 未结 4 797
灰色年华
灰色年华 2021-02-08 05:05

I have trouble with using capybara to test tinymce form. I\'m using tinymce-rails and have 7 editors in my form. Also I\'m using asciimath plugin with tinymce.

Everythin

相关标签:
4条回答
  • 2021-02-08 05:35

    Switching to chrome as described here solved my problem.

    Obviously the problem is related with a bug in firefox driver.

    Still i think it is a valid question for firefox.

    0 讨论(0)
  • 2021-02-08 05:36

    I know that this is an old question but I just found it while trying to solve this issue as well.

    Although the original question said that he has 7 tinymce's on the same page I think that my solution might work for him too but I do know it will work if there is one tinymce as was my case.

    In my request spec I used this:

    page.execute_script('$(tinymce.editors[0].setContent("my content here"))')
    

    The page.execute_script with tell it to run the jQuery function. It then finds the first tincymce editor and sets the content.

    Worked like a charm for me. I think if there are more than one tinymce it can be called by its position.

    0 讨论(0)
  • 2021-02-08 05:42

    I had the same issue. After a day fighting, my tests finally passed.

    The code that I am using is:

    within_frame("producto_condiciones_ifr") do
      editor = page.find_by_id('tinymce')
      editor.native.send_keys 'filling text'
    end
    

    The first line is a method of capybara. The parameter passed is the ID of the iframe.

    Line #2 is a must.

    In line #3 goes the text that you wish to place inside TinyMCE

    0 讨论(0)
  • 2021-02-08 05:53

    Try to switch to an iframe that contains tinymce textarea input, and than send_keys:

    # +session+ is an instance of Capybara::Session class
    browser = session.driver.browser
    browser.switch_to.frame(iframe_id)
    editor.native.send_keys(text)
    browser.switch_to.default_content
    
    0 讨论(0)
提交回复
热议问题