TinyMCE: Capybara::ElementNotFound: 无法找到可见框架 "content_ifr"

TinyMCE: Capybara::ElementNotFound: Unable to find visible frame "content_ifr"

在 Capybara 功能规范中,我正在尝试执行以下操作:

  within_frame("element_content_content_ifr") do
    # do stuff
  end

其中 element_content_content_ifr 是我的 tinymce iframe 的 CSS ID。

我收到错误:

Capybara::ElementNotFound:
       Unable to find visible frame "element_content_content_ifr"

我在测试和检查元素期间设置了暂停。指定ID的iframe肯定是有的,但是Capybara找不到。我没有遇到 Capybara 在我的应用程序的其他部分查找 iframe 的问题,只有 TinyMCE iframe。

在执行 within_frame 行之前,我也尝试过 sleep 5,但我得到了同样的错误。我做错了什么吗?当 TinyMCE 在页面上时,是否有正确的方法来进行 Capybara 测试?

附件是 iframe 在页面上的可见性及其 DOM 祖先的屏幕截图:

从显示的 HTML/CSS 来看,iframe 的显示方式令人困惑,因为它的祖先 <div role="application" ...> 具有可见性:"hidden" 作为一种样式,并且没有可见的覆盖在下面的任何地方。首先要确保您 运行 是 Capybara 的最新版本以及您正在使用的任何驱动程序(我假设是 selenium)。如果您已经是,或者这不能解决问题,您可以尝试使用

解决它
within_frame("element_content_content_ifr", visible: false) do

看看是否可行。

除此之外,如果您能弄清楚是什么 CSS 使框架在隐藏元素内实际上可见,如果您能在 Capybara 项目上提交问题并提供足够的信息来复制,我将不胜感激问题。