fill_in in tinyMce

时间:2013-02-26 06:47:23

标签: ruby-on-rails selenium tinymce cucumber

我想在一个带有Tinymce Editor的页面中填写文本,用于使用Cucumber和selenium驱动程序进行功能自动化测试。我能够打开图像对话框但无法填写其中的文本字段。我知道TinyMce有一个嵌入式包含其他html的iframe标签。 我使用了以下步骤,但不起作用。

When /^I fill in the xpath "([^"]*)" with "([^"]*)"$/ do |xpath, value|
  find(:xpath, xpath).set 'value'
end

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
  fill_in(field, :with => value)
end

我收到错误为Unable to find xpath pFA of image for refrenece。enter image description here

4 个答案:

答案 0 :(得分:0)

我认为你应该切换到chrome并使用这里的方法:How to fill tinymce-rails editor with capybara and selenium?

看起来firefox有一个知道的错误。

答案 1 :(得分:0)

这对我有用....

When ^I enter (.+) in textbox of tinymce iframe having id as (.+)$ do |any_details,tiny_id|
  within_frame("#{tiny_id}") do
    fill_in("image_name", :with =>any_details)
  end  
end

另外,要选择编辑中的整个文字进行自动化,请使用以下命令:c

When ^I select the entire textarea content in the editor$ do
  evaluate_script("tinyMCE.activeEditor.selection.select(tinyMCE.activeEditor.getBody(), true);")
end

答案 2 :(得分:0)

试试这个:

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
  sleep 0.5 until page.evaluate_script("tinyMCE.get('#{field}') !== null")
  js = "tinyMCE.get('#{field}').setContent('#{val}')"
  page.execute_script(js)
end

供参考,请查看此gist

答案 3 :(得分:0)

这对我有用:

page.execute_script('tinymce.get("my_element").setContent("updated content");')