selenium - 如何在 Capybara 中滚动模态窗口

标签 selenium rspec modal-dialog capybara

我正在使用 Selenium WebDriver、RSpec 和 Capybara 进行测试。

我让程序在模式窗口中成功填写了一些字段。现在我想单击此模式窗口底部的按钮。乍一看,我看不到这个按钮,所以 Capybara 需要在模态窗口中向下滚动。

网页的两个相关代码片段:

<div class = “modal”> </div>
   <button class=”btn …..”> TextOnButton ::after </button>

我试过:

within('.modal') do
      find('.btn', text: ‘TextOnButton').scrollIntoView(true)
end

但收到错误信息。

Unable to find visible css ".btn" with text "TextOnButton"

我试过:

within('.modal’) do
       page.execute_script 'window.scrollBy(0,100)'
end

但随后他滚动主窗口而不是模态窗口。

最佳答案

假设您的 HTML 片段不正确并且按钮元素实际上包含在模态中(如在您的文本描述中),那么您可以尝试类似的方法

within('.modal') do
  btn = find(:button, 'TextOnButton', visible: :all)
  execute_script('arguments[0].scrollIntoView(true)', btn)
  btn.click
end

关于selenium - 如何在 Capybara 中滚动模态窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47339755/

相关文章:

java - Selenium 没有使用 Chromedriver 通过 xpath 找到元素

ruby-on-rails - 未定义的局部变量或方法 `root_path' Hartl's Tutorial Chapter 5.3.2

javascript - 获取 HTML 属性值

javascript - 如何在 iframe 中垂直居中模式?

ruby-on-rails - 如何将 Rails DateTime 分辨率限制为微秒?

javascript - w3schools 模态动画关闭

java - 如何点击 Selenium 中网页元素的特定位置?

c# - 花了很长时间找不到 Selenium C# 元素

java - Selenium 和 Java 中的预期条件 "OR"

ruby-on-rails - Rails 4 和 Rspec - 生成 Controller 测试