我遇到了Poltergeist的问题。我无法让驱动程序在页面上找到一个字段。我想要做的是在开始添加新文本之前执行一些js以确保输入字段为空。我有一个带有标签os“技能列表”和id为“user_skill_list”的字段。为了使步骤更通用,我想通过标签名称找到该字段,然后获取id。
And(/^I delete the content of "([^"]*)"$/) do |label|
field_id = page.find_field(label).native.attributes['id'].value
page.execute_script("$('#{field_id}').val('');")
end
以下是错误消息:
@javascript
Scenario: Update user by removing # features/godmin/skills.feature:36
Given "Thomas" skills are "rspec, testing" # features/step_definitions/godmin_steps.rb:63
And I click on "Edit" for "Thomas" # features/step_definitions/godmin_steps.rb:43
And I delete the content of "Skill list" # features/step_definitions/godmin_steps.rb:69
Unable to find field "Skill list" (Capybara::ElementNotFound)
./features/step_definitions/godmin_steps.rb:70:in `/^I delete the content of "([^"]*)"$/'
features/godmin/skills.feature:39:in `And I delete the content of "Skill list"'
```
我的黄瓜设置很基本。
# features/support/env.rb
...
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.default_max_wait_time = 5
...
谢谢。如果我要澄清我的问题,请告诉我。
答案 0 :(得分:1)
假设您的html类似于
<label for="user_skill_list">Skill list</label>
<input id="user_skill_list"/>
然后
page.find_field('Skill list').set('')
应找到该字段并清除它。如果它没有找到元素,那么有几种可能性。
该元素在页面上不可见
正在应用的CSS正在改变&#34;技能列表的情况&#34;
您的html中存在拼写错误,因此标签实际上并未与该字段相关联。您只需执行page.find_field('user_skill_list').set('')
即可对此进行测试,因此标签不涉及
注意:您只需执行page.find_field('Skill list')[:id]
即可获取ID,而不必使用.native.xxxx - 尽管此用例并不真正需要