如何在Capybara中滚动模态窗口

时间:2017-11-16 21:54:20

标签: 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

但收到了错误消息。

  

无法找到可见的css&#34; .btn&#34; with text&#34; TextOnButton&#34;

我试过了:

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

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

3 个答案:

答案 0 :(得分:1)

假设您的HTML代码段不正确且按钮元素实际包含在模态中(如文字说明中所示),那么您可以尝试类似

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

答案 1 :(得分:1)

这项工作:

printf "%s\n"

答案 2 :(得分:0)

我知道你已经在模态上执行代码,但只是想知道你是否先使用driver.switchTo()。window(句柄)来切换到那个模态?