1

我无法使用 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
4

1 回答 1

4

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

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

如果您了解 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

所以最具挑战性的部分是找到正确的ul.token-input-list,因为你必须根据它相对于原始输入的位置来找到它,而 selenium webdriver 不允许你导航 dom。

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

于 2011-09-20T17:58:39.870 回答