【问题标题】:How to scroll a modal window in Capybara如何在 Capybara 中滚动模式窗口
【发布时间】:2017-11-16 21:54:20
【问题描述】:

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

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

网页的两个相关代码sn-ps:

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

我试过了:

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

但收到错误消息。

无法找到带有文本“TextOnButton”的可见 CSS“.btn”

我试过了:

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

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

【问题讨论】:

  • 那里的 HTML sn-p 到底是什么意思? .modal 中的按钮元素是否存在,&lt;button&gt; 元素中显示的::after 是什么?
  • 非常感谢托马斯,它有效!你是对的,它只是一个 HTML/CSS 弹出窗口。很抱歉这个模棱两可的表述。
  • 不客气 - 不要忘记接受答案(复选标记)

标签: selenium rspec modal-dialog capybara


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这个作品:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这不是一个实际的系统模式——它只是一个 HTML/CSS 弹出窗口
      猜你喜欢
      • 2017-10-25
      • 2015-11-03
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2019-11-25
      相关资源
      最近更新 更多