7

キュウリの html 要素の最も近い親を見つけたいと思います。jQuery の .closest() 関数と同じです。

これは私の(疑似)コードです:

  aspect = find('.dropdown li:contains('+selector+')')
  dropdown = aspect.closest('.dropdown') #<-- the closest() function does not exist

  if not aspect.hasClass('.selected')
    dropdown.click
    sleep 1
    aspect.click
  end

カピバラを使用してこれを達成する方法を教えてもらえますか?

乾杯!

マヌエル

4

3 に答える 3

2

これは普遍的な解決策ではありませんが、要素をクリックするだけの場合は、jQueryを直接使用することをお勧めします。

page.execute_script('$(...).closest(...).click()')

それ以外に、Capybaraには.closestメソッドがありませんが、多くの場合、セレクターを使用して(おそらくXPathを使用して)より創造的にすることでうまくいく可能性があります。

于 2011-12-08T21:56:26.957 に答える
1

これを試して。

module CapybaraNodeElementExtension
  def closest(*args)
    parent = first(:xpath, './/..', wait: false)
    until parent.matches_selector?(*args)
      # return nil if not found
      if parent.matches_selector?(:xpath, '/HTML')
        parent = nil
        break
      end
      parent = parent.first(:xpath, './/..', wait: false)
    end

    parent
  end
end

Capybara::Node::Element.send(:include, CapybaraNodeElementExtension)

このコードは、バージョン 2.18 では機能しませんでした。matches_selector?失敗します。3.7を試してみてください。

于 2018-09-10T04:16:16.450 に答える