我正在尝试测试jquery UI自动完成,我已经使用selenium驱动程序传递了测试。我想切换到poltergiest进行一些无头测试,但现在我的测试现在都失败了。
由于某种原因我似乎没有选择自动完成选项
步骤
When /^select contract$/ do
VCR.use_cassette("contract") do
selector =
'.ui-menu-item a:contains("John Smith (123456)")'
within("div#review") do
fill_in("contract", with: "john")
end
sleep 2
page.execute_script "$('#{selector}').trigger(\"mouseenter\").click();"
within("div#myPerformaceReview") do
find_field("contract").value.should ==
"John Smith (123456)"
end
end
end
测试通过使用Selenium驱动程序而不对步骤进行任何更改。
关于如何调试此问题的任何建议?
版本
答案 0 :(得分:8)
我已经设法搞清楚了,似乎capybara-poltergeist驱动程序不会触发jquery-ui用来显示下拉列表的任何事件。
我在这里找到答案:https://github.com/thoughtbot/capybara-webkit/issues/50
我在 features / support
中创建了一个表单帮助器module FormHelper
def fill_in_autocomplete(selector, value)
page.execute_script %Q{$('#{selector}').val('#{value}').keydown()}
end
def choose_autocomplete(text)
find('ul.ui-autocomplete').should have_content(text)
page.execute_script("$('.ui-menu-item:contains(\"#{text}\")').find('a').trigger('mouseenter').click()")
end
end
World(FormHelper)
然后我使用这些方法填写表格并选择所需的选项。
答案 1 :(得分:3)
Martin的答案几乎对我有用,但我发现输入也需要集中精力才能使其发挥作用:
module FormHelper
def fill_in_autocomplete(selector, value)
page.execute_script %Q{$('#{selector}').focus().val('#{value}').keydown()}
end
def choose_autocomplete(text)
find('ul.ui-autocomplete').should have_content(text)
page.execute_script("$('.ui-menu-item:contains(\"#{text}\")').find('a').trigger('mouseenter').click()")
end
end
在同一页面上找到它:https://github.com/thoughtbot/capybara-webkit/issues/50#issuecomment-4978108