点击Capybara中的滚动下拉列表

时间:2017-01-12 13:15:17

标签: automated-tests capybara selectize.js

我的下拉列表有问题,它使用选择性来制作下拉列表,但是当选项数量太大时,它会在下拉列表中添加一个滚动条,当我尝试点击一些未看到的选项时(你需要滚动它才能看到)capybara认为选项就在那里并且单击输出选项将无需滚动。没有什么可以改变可见性(命令它搜索不可见的元素也不起作用)

2 个答案:

答案 0 :(得分:2)

您可以在下拉列表中单击可见元素,而不是发送:arrow_down本机密钥以模拟向下键操作。您应该这样做,直到元素可见,然后单击active选项。

选中selectize.js主页:

find("#select-country-selectized").click()
while(true)
  break if find(".option.active").text == "Benin"
  find("#select-country-selectized").native.send_keys(:arrow_down)
end

find(".option.active").click

答案 1 :(得分:0)

gunesmes的例子非常有帮助,我做了一些改变,比如让休息一行,因为其他人会一直跳到第一个选项并更改has_css的查找?因为find返回错误并且has_css?返回true或false。我也改变了第一个发现,因为我使用了茧,我需要总是填充最后生成的输入。最终的结果是这样的:

    def scroll_dropdown(user)
     all('input[id$="_user_id-selectized"]').last.click
     while(true)
      break if page.has_css?(".option.active", text: user, match: :prefer_exact, wait: false)
      all('input[id$="_user_id-selectized"]').last.native.send_keys(:arrow_down)
     end

     find(".option.active").click
    end