2016-07-29 32 views
0

所以這個頁面的源代碼:我如何測試如果從水豚/ Poltergeist的下拉菜單中選擇一個項目?

<form class="ui form" action="/install" method="post"> 

       <h4 class="ui dividing header">Database Settings</h4> 
       <p>Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB.</p> 
       <div class="inline required field "> 
        <label>Database Type</label> 
        <div class="ui selection database type dropdown"> 
         <input type="hidden" id="db_type" name="db_type" value="MySQL"> 
         <div class="text">MySQL</div> 
         <i class="dropdown icon"></i> 
         <div class="menu"> 

           <div class="item" data-value="MySQL">MySQL</div> 

           <div class="item" data-value="PostgreSQL">PostgreSQL</div> 

           <div class="item" data-value="SQLite3">SQLite3</div> 

         </div> 
        </div> 
       </div> 

       <div id="sql_settings" class=""> 
        <div class="inline required field "> 
         <label for="db_host">Host</label> 
         <input id="db_host" name="db_host" value="127.0.0.1:3306"> 
        </div> 
        <div class="inline required field "> 
         <label for="db_user">User</label> 
         <input id="db_user" name="db_user" value="root"> 
        </div> 
        <div class="inline required field "> 
         <label for="db_passwd">Password</label> 
         <input id="db_passwd" name="db_passwd" type="password" value=""> 
        </div> 
        <div class="inline required field "> 
         <label for="db_name">Database Name</label> 
         <input id="db_name" name="db_name" value="gogs"> 
         <span class="help">Please use INNODB engine with utf8_general_ci charset for MySQL.</span> 
        </div> 
       </div> 

       <div id="pgsql_settings" class="hide"> 
        <div class="inline required field"> 
         <label>SSL Mode</label> 
         <div class="ui selection database type dropdown"> 
          <input type="hidden" name="ssl_mode" value="disable"> 
          <div class="default text">disable</div> 
          <i class="dropdown icon"></i> 
          <div class="menu"> 
           <div class="item" data-value="disable">Disable</div> 
           <div class="item" data-value="require">Require</div> 
           <div class="item" data-value="verify-full">Verify Full</div> 
          </div> 
         </div> 
        </div> 
       </div> 

       <div id="sqlite_settings" class="hide"> 
        <div class="inline required field "> 
         <label for="db_path">Path</label> 
         <input id="db_path" name="db_path" value="data/gogs.db"> 
         <span class="help">The file path of SQLite3 or TiDB database. <br>Please use absolute path when you start as service.</span> 
        </div> 
       </div> 

這是我的規格文件;

require 'spec_helper' 

describe "Configure Gogs" do 
include Capybara::DSL 

context 'Gogs Settings' do 
before { visit "http://0.0.0.0:3000" } 

it 'fill settings' do 
    select 'SQLite3', from: 'db_type' 
    fill_in :db_path, with: '/data/gogs.db' 

    within("#sql_settings") do 
    fill_in :db_host, with: '127.0.0.1:3306' 
    fill_in :db_user, with: 'Tom' 
    fill_in :db_passwd, with: '123456' 
    fill_in :db_name, with: 'vitakid' 
    fill_in :db_name, with: 'vitakid' 
    end 

    fill_in :app_name, with: 'CODE' 
    fill_in :repo_root_path, with: '/data/git/gogs' 
    fill_in :run_user, with: 'git' 
    fill_in :domain, with: 'localhost' 
    fill_in :ssh_port, with: '22' 
    fill_in :http_port, with: '3000' 
    fill_in :app_url, with: 'http://localhost:3000/' 
    fill_in :log_root_path, with: '/app/gogs/log' 


    click_button 'Install Gogs' 
    save_and_open_page 
end 

末 結束 這到底是我的錯誤;

1)配置視護目鏡視護目鏡設置填充設置 故障/錯誤:選擇 '的SQLite3',從:在2.74秒成品 'db_type'

Capybara::ElementNotFound: 
    Unable to find select box "db_type" 
# ./spec/gogs_spec.rb:10:in `block (3 levels) in <top (required)>' 

(文件採取0.76115秒加載) 1例如1點失敗

失敗的例子:

rspec的./spec/gogs_spec.rb:9#配置視護目鏡視護目鏡設置填充設置

我可以試着找到給它錯誤的地方。請幫助

回答

0

select 'SQLite3', from: 'db_type'不起作用,因爲db_type select元素隱藏在頁面上,並已被一些div替換。你需要做的是用戶必須做的事情,點擊下拉圖標,然後點擊菜單中的項目,如

db_type_select = find('div.database.type.dropdown') 
within(db_type_select) do 
    find('i.dropdown').click 
    find('.item', text: 'SQLite3').click 
end 
相關問題