4

したがって、最近セレンWebドライバーを更新するまで、このコードは完全に正常に機能していました。

When /^I search for (.*)$/ do |term|
    term = " " if term == "blank"
    step "I fill in search with #{term}"
    within(".navbar-search") do
        page.find(:css, "li:first").click
    end
end

更新しましたが、次のエラーが表示されます。

 An invalid or illegal string was specified (Selenium::WebDriver::Error::UnknownError)
  ./features/step_definitions/search_steps.rb:5:in `block (2 levels) in <top (required)>'
  ./features/step_definitions/search_steps.rb:4:in `/^I search for (.*)$/'
  features/search_friend.feature:13:in `When I search for <term>'

キュウリの特徴は次のとおりです。

@javascript
Scenario Outline: The search bar
    Given I login
    And I have a contact named ABC
    And I have a contact named DEF
    And I have a contact named GHI
    When I search for <term>
    Then I should see the message <message>

    Examples:
    | term | message |
    | ... some examples ... | |
4

1 に答える 1

17

Webdriver だけでなく、Capybara も更新したと思います。

Capybara 2.1 は CSS セレクターのドライバー実装を使用するようになりました。Selenium Webdriver の場合、ブラウザの実装が使用されることを意味します。:first疑似セレクターは標準ではなく、ブラウザーでサポートされていないため、CSS セレクターは無効です。

以前は、Capybara が Nokogiri を使用して CSS セレクターを XPath に変換していたため、機能していました。Nokogiri は:first疑似セレクターをサポートしています。

したがって、無効な CSS セレクターを次のような有効なものに変更する必要があります。

  • page.first(:css, 'li').click
  • page.find(:css, 'li', match: :first).click(以前の亜種とこの亜種の違いは、この亜種は要素がページに表示されるのを待つが、最初の亜種は待たないことです。詳細については、Capybara README のこのセクションを参照してくださいmatch)
  • page.find(:css, "li:first-child").click
  • page.find('li:first-child').click
于 2013-05-26T18:14:30.590 に答える