1

在 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。

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

附件是 iframe 在页面上的可见性的屏幕截图,以及它的 DOM 祖先: DOM 元素的屏幕截图

4

1 回答 1

1

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

within_frame("element_content_content_ifr", visible: false) do

看看这是否有效。

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

于 2019-08-08T22:20:16.020 回答