如何使用Selenium测试jQuery TokenInput字段

时间:2011-07-27 09:55:39

标签: ruby-on-rails testing selenium capybara jquery-tokeninput

我无法使用selenium测试表单中的Tokeninput字段。情况是当我们输入内容时,它会给出一个选项列表,但这些选项不是DOM的一部分。文本填充该字段但不选择该项目。

我写的代码是:

Given admin user is on schedule interview page
And he select "obie[1]" and "DHH[1]" from the candidate name(s) auto sugget field

**step defination**
Given /^he select "([^"]*)" and "([^"]*)" from the candidate name\(s\) auto sugget field$/ do |arg1, arg2|

within(:css, "#interview_template_candidate_names_input") do

    fill_in('tmp',:with => arg1)              --tmp is name of the token input field
    find("li:contains('obie[1])'").click
    save_and_open_page
  end
 end

1 个答案:

答案 0 :(得分:4)

我终于成功完成了这项工作。这是要点:https://gist.github.com/1229684

该列表是dom(div.token-input-dropdown)的一部分,它被添加为body元素的最后一个子元素,这可能就是您没有看到它的原因。

如果你了解tokeninput插件正在做什么,你可以更好地了解你需要做什么。对于您创建的每个tokeninput,插件:

  1. 创建ul.token-input-list(紧接input#your_input_id之前)
  2. 创建ul.token-input-list input#token-input-your_input_id
  3. 隐藏input#your_input_id
  4. 创建div.token-input-dropdown
  5. 所以最具挑战性的部分是找到正确的ul.token-input-list,因为你必须根据它相对于原始输入的位置找到它,而selenium webdriver不允许你导航dom。

    之后,您只需填写input#token-input-your_input_id选项中的click和“div.token-input-dropdown li”,即可与您要查找的内容相匹配。