2016-02-24 140 views
1

我有一個Poltergeist的問題。我無法讓驅動程序在頁面上找到一個字段。我想要做的是在開始添加新文本之前執行一些js以確保輸入字段爲空。我有一個標籤爲「技能列表」,ID爲「user_skill_list」的字段。爲了使步驟更通用,我想通過標籤名稱找到字段,然後獲取ID。find_field與Poltergeist /水豚

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

請顯示相關html –

回答

1

假設你的HTML是一樣的東西

<label for="user_skill_list">Skill list</label> 
<input id="user_skill_list"/> 

然後

page.find_field('Skill list').set('') 

應該發現場,並清除它。如果它沒有找到元素,則有幾種可能性。

  1. 的元素是不是在頁面上可見

  2. 還有就是CSS被應用正在改變「技能列表」

  3. 有在你的HTML錯別字所以標籤的情況下,實際上並沒有與該領域相關聯。您可以通過只是在做page.find_field('user_skill_list').set('')測試這使標籤不參與

注意:您可以通過只是在做page.find_field('Skill list')[:id],而不是訴諸.native.xxxx獲得ID - 雖然這不是真正需要的本用例

+0

謝謝湯姆!我錯過了'style =「display:none;」'在場上。它由一些js修改,我沒有仔細檢查代碼。你指出我正確的方向。 – Thomas

相關問題