我无法使用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
答案 0 :(得分:4)
我终于成功完成了这项工作。这是要点:https://gist.github.com/1229684
该列表是dom(div.token-input-dropdown
)的一部分,它被添加为body元素的最后一个子元素,这可能就是您没有看到它的原因。
如果你了解tokeninput插件正在做什么,你可以更好地了解你需要做什么。对于您创建的每个tokeninput,插件:
ul.token-input-list
(紧接input#your_input_id
之前)ul.token-input-list input#token-input-your_input_id
input#your_input_id
div.token-input-dropdown
所以最具挑战性的部分是找到正确的ul.token-input-list
,因为你必须根据它相对于原始输入的位置找到它,而selenium webdriver不允许你导航dom。
之后,您只需填写input#token-input-your_input_id
选项中的click
和“div.token-input-dropdown li
”,即可与您要查找的内容相匹配。