2016-07-29 11 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 
相关问题