2016-05-26 37 views
2

Web要素の背景色を取得したいと思います。私はルビー/カピバラの正確なコマンドが同じかどうかわからない。 私たちのアプリケーション自動化では、Ruby、Selenium、およびCapaybaraを使用しています。rspec、ruby、capybaraを使ってWeb要素の背景色を取得します

+1

要素のいくつかの詳細を分けてください。同じものの可能なHTMLコード。 – nullpointer

+0

特定の属性を取得できるかどうかはわかりませんが、cssクラスで定義されている場合は取得できます。 –

答えて

0

私はcapybaraを理解する限り、ノード操作のために開発されたものではなく、要素の検索/マッチングを利用しています。この目的のためにnokogiriを使用することを提案します。

Capybara::Node::Elementは、値とテキストプロパティのみを提供します。

+0

NokogiriはCSSを処理しないので、背景色がインラインスタイル属性で定義されていて、OPがそのインラインスタイル属性を解析する必要がある場合にのみ機能します –

0

Capybaraは要素の完全なスタイルに直接アクセスすることはできませんが、evaluate_scriptを使用してアクセスできます。要素にidを持っていない、明らかにあれば、あなたの要素を配置する別の方法にwindow.getElementByIdを変更する必要があるだろう -

page.evaluate_script("window.getComputedStyle(document.getElementById('my_element_id'))['background-color']") 

のようなものは、あなたが探しているものを返す必要があります。あなたがセレニウムを使っているので、他のドライバーとはうまくやらないメソッドを使い、既にCapybaraの要素を見つけたら、以下のようなことができます。 DOM内の要素をJSから再度検索する方法を理解する

el = page.find(....) # however you've found the element in Capybara 
page.driver.browser.execute_script("return window.getComputedStyle(arguments[0])['background-color']", el.native) 
関連する問題