【问题标题】:TinyMCE: Capybara::ElementNotFound: Unable to find visible frame "content_ifr"TinyMCE:Capybara::ElementNotFound:找不到可见框架“content_ifr”
【发布时间】:2019-08-08 19:57:21
【问题描述】:

在 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 祖先的屏幕截图:

【问题讨论】:

  • 您确定“element_content_content_ifr”iframe 没有嵌套在另一个 iframe 中吗? iframe 在页面上也有任何大小吗?如果这些指针没有给出答案 - 添加相关的 HTML 或 DOM 检查的屏幕截图。
  • iframe 肯定不在另一个 iframe 内,虽然它在一个表单内,但这会影响什么吗?大小是一个有趣的问题。当没有任何内容时,我不确定它是否有大小,但在输入内容时有大小。感谢您的领导,如果它让我找到解决方案,我会告诉您。
  • 我查看了它,iframe 是 936x156(基于设备的当前大小),所以 iframe 肯定应该是可见的。
  • 请添加显示 iframe 及其祖先的 DOM 检查的 HTML 或屏幕截图
  • 另外 - 确保您没有调用 within_frame,而您的作用域是不包含 iframe 的元素(如果您是作用域的话)。

标签: ruby-on-rails rspec tinymce capybara tinymce-rails


【解决方案1】:

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

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

看看这是否有效。

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

【讨论】:

  • 谢谢,托马斯。 visible: false 帮助我前进。我实际上也很困惑,为什么我能够看到嵌套在隐藏元素中的元素。就我而言,这是 TinyMCE 的魔法,我已经没有时间进一步调查了。话虽如此,如果您愿意,我很乐意提出问题。我想知道这是否更多的是在驾驶室tinymce-rails。
猜你喜欢
  • 2023-04-03
  • 2018-05-07
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
相关资源
最近更新 更多