7

我正在尝试测试 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 驱动程序通过了测试,无需对步骤进行任何更改。

关于如何调试它的任何建议?

版本

  • 硒网络驱动程序(2.27.2)
  • 恶作剧 (1.0.2)
  • 黄瓜 (1.2.1)
  • 黄瓜导轨 (1.0.6)
  • 水豚 (1.1.4)
  • 幻影 1.8.1
4

2 回答 2

8

我已经设法弄清楚了,似乎 capybara-poltergeist 驱动程序不会触发 jquery-ui 用于显示下拉列表的任何事件。

我在这里找到了答案:https ://github.com/thoughtbot/capybara-webkit/issues/50

我在功能/支持中创建了一个表单助手

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)

然后我使用这些方法填写表格并选择所需的选项。

于 2013-01-22T12:27:36.910 回答
3

马丁的回答几乎对我有用,但我发现输入也需要重点关注才能使其发挥作用:

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

于 2013-06-10T06:23:08.237 回答