11

我无法使用 capybara 测试 tinymce 形式。我正在使用tinymce-rails并在我的表单中有 7 个编辑器。我也在使用带有tinymce的asciimath插件。

一切正常,但我无法编写测试来填写 tinymce 编辑器。

这是我的步骤定义代码的样子,与此处描述的非常相似:

within_frame("content_ifr") do
  editor = page.find_by_id('tinymce')
  editor.native.send_keys 'test'
end

问题是当我运行以下命令时:

editor.native.clear            # works, clear the editor area, I'm testing this with pry
editor.native.send_keys :tab   # works, moves focus to next input
editor.native.send_keys 'test' # returns "", nothing happens, nothing in editor

所以clear并按send_keys :tab预期工作。但我不能发送任何字符串。send_keys函数总是返回空字符串,当我使用 pry 进行测试时没有任何反应。

这里出了什么问题?以及如何调试/调查问题?

谢谢。

4

5 回答 5

9

我知道这是一个老问题,但我只是在尝试解决这个问题时才发现它。

虽然最初的问题说他在同一页面上有 7 个 tinymce,但我认为我的解决方案也可能适用于他,但我知道如果像我的情况一样有一个 tinymce,它会起作用。

在我的请求规范中,我使用了这个:

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

with 告诉它page.execute_script运行 jQuery 函数。然后它会找到第一个 tincymce 编辑器并设置内容。

对我来说就像一个魅力。我认为如果有不止一个tinymce,它可以通过它的位置来调用。

于 2014-04-16T19:51:38.493 回答
2

如此处所述切换到 chrome解决了我的问题。

显然问题与Firefox驱动程序中的错误有关。

我仍然认为这对 Firefox 来说是一个有效的问题。

于 2012-07-23T14:17:32.417 回答
0

尝试切换到包含 tinymce textarea 输入的 iframe,而不是 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
于 2012-07-25T11:24:22.963 回答
0

我遇到过同样的问题。经过一天的战斗,我的测试终于通过了。

我正在使用的代码是:

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

第一行是水豚的方法。传递的参数是 iframe 的 ID。

第 2 行是必须的。

第 3 行是您希望放置在 TinyMCE 中的文本

于 2018-08-31T19:10:32.547 回答
0

刚刚遇到了 RoR 和 rspec 的这个问题

我设法通过这样做来解决:

within_frame { page.find_by_id("tinymce").set("new content here") }

set方法将用新内容替换任何现有内容

如果要保留当前内容并向其中添加内容,请使用该send_keys方法

于 2022-02-01T21:35:06.683 回答