find_field 和 Poltergeist/Capybara
find_field with Poltergeist/Capybara
我对 Poltergeist 有疑问。我无法让驱动程序在页面上定位字段。我想要做的是在开始添加新文本之前执行一些 js 以确保输入字段为空。我有一个标签为 os "Skill list" 且 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
...
谢谢。如果我应该澄清我的问题,请告诉我。
假设您的 html 类似于
<label for="user_skill_list">Skill list</label>
<input id="user_skill_list"/>
然后
page.find_field('Skill list').set('')
应该找到该字段并将其清除。如果它没有找到元素,则有两种可能性。
该元素在页面上不可见
正在应用 CSS 正在更改 "Skill list"
的大小写
您的 html 中存在拼写错误,因此该标签实际上并未与该字段相关联。您可以通过 page.find_field('user_skill_list').set('')
来测试它,因此不涉及标签
注意:您只需执行 page.find_field('Skill list')[:id]
即可获得 ID,而不必求助于 .native.xxxx - 尽管此用例并不真正需要它
我对 Poltergeist 有疑问。我无法让驱动程序在页面上定位字段。我想要做的是在开始添加新文本之前执行一些 js 以确保输入字段为空。我有一个标签为 os "Skill list" 且 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
...
谢谢。如果我应该澄清我的问题,请告诉我。
假设您的 html 类似于
<label for="user_skill_list">Skill list</label>
<input id="user_skill_list"/>
然后
page.find_field('Skill list').set('')
应该找到该字段并将其清除。如果它没有找到元素,则有两种可能性。
该元素在页面上不可见
正在应用 CSS 正在更改 "Skill list"
的大小写
您的 html 中存在拼写错误,因此该标签实际上并未与该字段相关联。您可以通过
page.find_field('user_skill_list').set('')
来测试它,因此不涉及标签
注意:您只需执行 page.find_field('Skill list')[:id]
即可获得 ID,而不必求助于 .native.xxxx - 尽管此用例并不真正需要它