如何测试从Capybara / Poltergeist下拉菜单中选择的项目?

时间:2016-07-29 08:00:46

标签: rspec capybara dropdown 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>

这是我的spec文件;

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)配置Gogs Gogs设置填充设置      失败/错误:选择&#39; SQLite3&#39;,来自:&#39; db_type&#39;

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

在2.74秒内完成(文件加载时间为0.76115秒) 1例,1次失败

失败的例子:

rspec ./spec/gogs_spec.rb:9#配置Gogs Gogs设置填充设置

我无法发现它会给它带来什么错误。请帮助

1 个答案:

答案 0 :(得分:0)

1. exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) 2. exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) 不起作用,因为db_type select元素隐藏在页面上,并且已被某些div替换。您需要执行用户必须执行的操作,单击下拉图标,然后单击菜单中的项目,例如

select 'SQLite3', from: 'db_type'