ruby-on-rails - 在 Bootstrap 弹出框内使用 Watir .click

标签 ruby-on-rails testing twitter-bootstrap watir watir-webdriver

在 Watir 中,我试图访问出现在 Bootstrap 提供的弹出框内的 a 元素。

只是调用 a(:class, 'my_link').click 不想玩球,所以我添加了行 a(:class, 'my_link').wait_until_present 希望这可能是单击生成弹出窗口的元素和访问其内容之间的时间问题,但这只是在 30 秒后超时并返回该元素永远不会出现。

在等待期间,我可以打开代码检查器并确认该元素确实存在并且可以点击。

我应该提一下,手动执行 Watir 应该执行的步骤是可行的。

我目前的想法

我知道当我尝试使用 jQuery 与此元素交互时,使用常规 .click(); 是行不通的,我不得不调用 $('body' ).on('click', ',my_link'); 类似的东西可以在这里发挥作用吗?

这可能与元素被错误地归类为不可见有关。

如有任何指导,我们将不胜感激。

代码

这是从弹出框内部生成的代码:

<div class="popover fade bottom in" style="top: 40px; left: 424px; display: block;">
  <div class="arrow"></div>
  <div class="popover-inner">
    <h3 class="popover-title"></h3>
    <div class="popover-content">
    <!-- SNIP -->
      <p>
        <a class="my_link">My Link</a>
      </p>
    </div>
  </div>
</div>

弹窗由点击生成;

$('.nav-popup').popover('show');

这里是Watir测试的相关部分;

span(:class, 'nav-popup').click
a(:class, 'my_link').wait_until_present
a(:class, 'my_link').click

为了检查我是否可以与弹出窗口交互,我将以下内容添加到我的 Watir 测试中;

quick_log = a(:class, 'my_link').html
binding.pry

当 pry 开时,我可以看到 quick_log 包含正确的 HTML 内容,这很烦人,因为下一行是 a(:class, 'my_link').wait_until_present 它在上面乱搞。

错误信息

线

a(:class, 'my_link').click

生成;

Selenium::WebDriver::Error::ElementNotVisibleError:
   Element is not currently visible and so may not be interacted with

最佳答案

给出你的答案,那么我会简单地做而不是两行代码

browser.div(:class, 'popover-content').a(:class, 'my_link').click

鉴于它是由 javascript 动态创建的,您可能必须投入一些东西来同步并等待元素生成

browser.div(:class, 'popover-content').when_present.a(:class, 'my_link').click

关于ruby-on-rails - 在 Bootstrap 弹出框内使用 Watir .click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014192/

相关文章:

javascript - 如何将 <select> 元素合并到 Bootstrap 下拉列表中?

javascript - 如何使用 Bootstrap 3 在悬停时创建滑动图像?

ruby-on-rails - 在 Rails 中,模型的实例不会显示在我的表中。当控制台显示 "COMMIT"和 "=>true"时发生了什么?

ruby-on-rails - 需要在特定时间运行作业

python - 如果 setUp 在 Python unittest 中引发异常,则停止运行测试

javascript - Protractor + Angular 误差 - 元素在点处不可点击

mysql - Rails 事件记录的选择和组有什么区别?

ruby-on-rails - Rack 应用程序与 rails 应用程序之间有什么区别?

java - JUnit 中未调用 setUp()

twitter-bootstrap - bootstrap.css 和 bootstrap-responsive.min.css 文件的区别