4

要素の境界線スタイルを取得する必要があります。次のコードを試しました:

sample = page.execute_script("
  var x = window.document.querySelector('#{path}');
  a = window.getComputedStyle(x, null).getPropertyValue('border');
  return a;
")                     
puts sample

nullを印刷しています。

(注: 要素の境界線は - ソリッド)

4

1 に答える 1

10

以前の質問に基づいて、selenium-webdriverを使用していると想定しています。

ネイティブのselenium-webdriver要素には、計算されたスタイルをチェックするメソッドがあります-Element#css_value

次のページHTMLがある場合:

<html>
    <body>
        <p style="border-style:solid;">A solid border.</p>
    </body>
</html>

次に、次を使用して境界線スタイルを取得できます。

puts page.first('p').native.css_value('border-style')
#=> 'solid'

コードで次のことに注意してください。

  1. カピバラは、を使用して目的の要素を見つけますpage.first('p')
  2. nativeselenium-webdriver要素を取得するために使用されます
  3. css_value計算されたスタイルを取得するために使用されます。css_valueメソッドには、省略形の「border」ではなく、パラメーター「border-style」を渡す必要があることに注意してください。

アップデート:

あなたの特定の例のために:

  1. 省略形の「border」プロパティを使用すると、「border-style」プロパティは空白になるようです。代わりに、特定の「border-bottom-style」、「border-left-style」などのプロパティを使用する必要があります。
  2. 要素のIDがわかっているので、次を使用してCapybara要素を取得できます。page.find_by_id('option')

上記を考慮して、以下を使用して計算された境界線スタイルを確認できます。

puts page.find_by_id('option').native.css_value('border-bottom-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-left-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-right-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-top-style')
#=> "solid"
于 2013-01-07T21:29:23.920 に答える