2016-07-12 10 views
1

から属性値を取得することはできません。Rubyのセレン2.0は、私は、次のHTMLを持って選択ボックス

<div class="input-with-icon no-icon"> 
    <select class="hidden-input js-duration-dropdown" value="4 hours"> 

私は属性値

@driver.find_element(:xpath, "//div[@class=\"input-with-icon no-icon\"]/select[@class=\"hidden-input js-duration-dropdown\"]").attribute("value") 

を取得するためにRubyのセレンウェブドライバを使用する場合、私は "空の文字列を得ました「

しかし、私はクロームコンソールでJSを使用している場合

document.evaluate("//div[@class=\"input-with-icon no-icon\"]/select[@class=\"hidden-input js-duration-dropdown\"]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.getAttribute("value") 

"4時間"という値を表示できます。 問題の原因を理解できません。誰も同じ問題に遭遇していますか?事前にお手伝いいただきありがとうございます。

+0

属性を見つけて取得するときに、完全に読み込まれないことがあります... –

答えて

0

htmlのselect要素のクラスは、表示されていない非表示であることを示します。 WebDriverでは、要素の属性が非表示の場合はその属性を取得できません。 Javascriptを使用して要素を表示可能に設定してから、値を取得してください。

+0

あなたの返事ありがとうございますが、要素を可視に設定しても問題は解決しませんでした。 – May

+0

要素を表示するために使用するコードを表示できますか? –

+0

私が使用するコードは次のとおりです。 ' driver.execute_script( 'arguments [0] .style.visibility = \" visible \ ";'、要素) ' – May

0

私は最終的には、JavaScriptの機能を注入することにより動作しました:セレンは、属性値を取得できなかった理由

attributes = driver.execute_script('var items = {}; 
for (index = 0; index < arguments[0].attributes.length; ++index) 
{ items[arguments[0].attributes[index].name] = 
arguments[0].attributes[index].value }; return items;', element) 

return attributes 

私はまだ知りませんでした。

関連する問題