2016-11-09 135 views
3

我使用JS水豚與selenium-webdriver爲我的功能測試。Rspec:水豚選擇不工作

我想從選擇框中

這裏選擇一個品牌是我的HTML

<select id="campaign_brand_id" name="campaign[brand_id]" class="form-control"> 
    <option value="">Choose a Brand</option> 
    <option value="1">Brand1</option> 
    <option value="2">Brand2</option> 
</select> 

這裏是我的測試代碼

before(:each) do 
    @brand = FactoryGirl.create(:brand, name: 'Brand1', company: member.company) 
end 

scenario 'Create a new campaign - with minimum valid data', js: true do 
    visit new_brands_campaign_url(host: "skreem.dev", port: Capybara.current_session.server.port) 

    select (@brand.name), from: 'campaign_brand_id' 
    click_button 'Create Campaign' 
end 

我曾嘗試以下也...

1. select (@brand.name), from: 'campaign[brand_id]' 
2. select (@brand.id), from: 'campaign_brand_id' 
3. find('#campaign_brand_id').find(:xpath, "option[#{@brand.id}]").select_option 
4. within '#campaign_brand_id' do 
    find("option[value='1']").click 
    end 

其他水豚命令,如fill_inchooseclick_button正在...我在視圖中使用collection_select ...是造成這個問題?

enter image description here

+0

您是否可以更具體地瞭解不工作? –

+0

從':campaign_brand_id''做'select @ brand.name時得到的錯誤究竟是什麼? –

回答

1

我想你幾乎使用XPath知道答案,但是我會盡量避免它,由於它怎麼脆即可。

我用下面的代碼,但最近我只跟01​​運行我的測試,而不是硒:

option = @brand.name 
find('#campaign_brand_id').find(
    'option', text: /#{option}/i).select_option 

我用文字作爲選擇,因爲對我來說,這是用戶所看到的和因此是功能測試應該尋找的。 另外,我使用了一個正則表達式來匹配文本,使其不區分大小寫 - 這是爲了防止由於變化的UI更改(如上/下文字框)導致的失敗測試。它還可以幫助您擺脫與文本的顯示與實際情況混雜的css text-transform的尷尬問題。


更新

如果問題仍然持續,您將不得不做一些調試。我的建議是pry debugger寶石。將其添加到您的gemfile中,並在失敗的行上面的方案中包含行binding.pry。 如果我沒有記錯,硒只在前臺運行,所以你可以在看頁面的時候使用交互式的pry控制檯。

首先嚐試找到選擇框(find('#campaign_brand_id'))及其選項,然後查看selenium瀏覽器在運行命令時的功能。

如果您還沒有運氣好的話,也許這些問題將有所幫助:

  • 是否有任何錯誤或它靜靜地
  • 未能有任何自定義的JS/CSS修改您的選擇框?
  • 嘗試通過execute_script與網頁互動(見selenium driver docs瞭解詳細信息)
+0

仍然我得到相同的錯誤...其他capybara命令像fill_in,選擇,click_button工作正常...無法理解與選擇的問題???新增了ScreenShot .... –

0

使用選擇不帶括號:

select @brand.name, from: 'campaign[brand_id]' 

select @brand.name, from: 'campaign_brand_id' 

可以使用編號或名稱選項from

但如果您的表單已定製且實際選擇已隱藏,則您必須使用另一個案例