ruby-on-rails - 如何使用 Selenium 测试 jQuery TokenInput 字段

标签 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

最佳答案

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

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

如果您了解 tokeninput 插件的作用,就可以更好地了解您需要做什么。对于您创建的每个 token 输入,插件:

  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_idclick 上的“div.token-input-dropdown li ”与您要查找的内容匹配的选项。

关于ruby-on-rails - 如何使用 Selenium 测试 jQuery TokenInput 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6842464/

相关文章:

ruby-on-rails - 仅在生产中运行 Assets :precompile just hangs,

ruby-on-rails - 如何计算下一个月的周年纪念日

ruby-on-rails - Rails accepts_nested_attributes_for with _destroy 可以跳过存在验证

Python + Selenium - 网页抓取和计算 HTML 中某些文本数据的出现次数

HTML(或 Rails)按钮代码问题

ruby-on-rails - 测试期间 nil 类的未定义方法 '[]'

java - 静态字段的 JUnit 初始化

Java:宏观和微观基准之间的区别

java - 无法使用 Selenium java API 创建 Firefox 驱动程序

java - 使用 Java 处理 Selenium 中的多个窗口