Selenium 如何在Capybara中滚动模式窗口
我正在测试SeleniumWebDriver、RSpec和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> 但是收到了错误消息 找不到文本
<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弹出窗口