Selenium 如何在Capybara中滚动模式窗口

Selenium 如何在Capybara中滚动模式窗口,selenium,rspec,modal-dialog,capybara,Selenium,Rspec,Modal Dialog,Capybara,我正在测试SeleniumWebDriver、RSpec和Capybara 我让程序成功地在模式窗口中填充了一些字段。现在我想点击这个模式窗口底部的一个按钮。乍一看,我看不到这个按钮,所以水豚需要在模式窗口中向下滚动 该网页的两个相关代码段: <div class = “modal”> </div> <button class=”btn …..”> TextOnButton ::after </button> 但是收到了错误消息 找不到文本

我正在测试SeleniumWebDriver、RSpec和Capybara

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

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

<div class = “modal”> </div>
   <button class=”btn …..”> TextOnButton ::after </button>
但是收到了错误消息

找不到文本为“TextOnButton”的可见css“.btn”

我试过:

within('.modal') do
      find('.btn', text: ‘TextOnButton').scrollIntoView(true)
end
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

我知道您已经在模式上执行代码了,但我想知道您是否使用了driver.switchTo().window(handle)来首先切换到该模式?

此工作:

execute_script('arguments[0].scrollIntoView(true)', element)

你说的HTML代码片段到底是什么意思??按钮元素是否在
.modal
中,以及
是什么::在
元素中显示
之后?非常感谢Thomas,它可以工作!你说得对,它只是一个HTML/CSS弹出窗口。很抱歉这个模棱两可的表述。不客气-别忘了接受答案(复选标记),它不是一个实际的系统模式-它只是一个HTML/CSS弹出窗口