Automated tests 在下拉菜单中单击,并在Capybara中滚动

Automated tests 在下拉菜单中单击,并在Capybara中滚动,automated-tests,capybara,selectize.js,Automated Tests,Capybara,Selectize.js,我的下拉列表有问题,它使用selectize进行下拉,但是当选项数量太多时,它会在下拉列表中添加一个滚动条,当我尝试单击一些看不到的选项时(您需要滚动它才能看到)水豚认为该选项在那里,并在输入中单击该选项所在的位置,而无需滚动。可见性没有任何变化(命令它搜索不可见的元素也不起作用)您可以单击下拉列表中的可见元素,然后发送:向下箭头本机键以模拟向下键操作。您应该这样做,直到元素可见,然后单击活动选项 检查以下主页: find("#select-country-selectized").click(

我的下拉列表有问题,它使用selectize进行下拉,但是当选项数量太多时,它会在下拉列表中添加一个滚动条,当我尝试单击一些看不到的选项时(您需要滚动它才能看到)水豚认为该选项在那里,并在输入中单击该选项所在的位置,而无需滚动。可见性没有任何变化(命令它搜索不可见的元素也不起作用)

您可以单击下拉列表中的可见元素,然后发送
:向下箭头
本机键以模拟向下键操作。您应该这样做,直到元素可见,然后单击
活动
选项

检查以下主页:

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

您可以单击下拉列表中的可见元素,然后发送
:arrow_down
本机键以模拟下键操作。您应该这样做,直到元素可见,然后单击
活动
选项

检查以下主页:

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

gunesmes的例子非常有用,我做了一些更改,比如让break one line向上,因为其他情况下它总是跳转第一个选项,并更改has_css的查找?因为find返回了一个错误并且有_css?返回true或false。我还更改了第一个发现,因为我使用cocoon,并且我需要始终填充生成的最后一个输入。最终的结果是这样的:

    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

gunesmes的例子非常有用,我做了一些更改,比如让break one line向上,因为其他情况下它总是跳转第一个选项,并更改has_css的查找?因为find返回了一个错误并且有_css?返回true或false。我还更改了第一个发现,因为我使用cocoon,并且我需要始终填充生成的最后一个输入。最终的结果是这样的:

    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

编辑第一个选项。应该始终有
.option.active
如果
没有问题,请单击第一个选项的
编辑。应该始终有
.option.active
如果
没有问题,请单击