2016-04-18 24 views
0

Firebugと他のDevToolsでは、HTML要素に対応するDOMプロパティと値を取得できます。Seleniumを使用してDOMプロパティ値を抽出する

どのようにこのような値は、セレニウムのJavaコードを使用して抽出できますか? 私はgetAttribute()をしようとしたが、それは唯一のHTML属性のためではなく、「値」かなど、私はこのアプローチのために行ってきました理由は

「スペルチェック」のようなDOMプロパティのために働いているように見えること<input>に関連付けられた値テキストフィールド(以下のスニペット)は実行時に生成され、データはKnockoutを使用してバインドされます。によると

<input class="form-control" type="text" style="cursor: text" readonly="readonly" data-bind="textInput: url"> 

Firebug's DOM panel displaying DOM properties of an <input> element

答えて

0

:ので、それは

など、 getText()getAttribute("value")getAttribute("text")getAttribute("innerHTML")getAttribute("innertext")などの標準的なアプローチでそれらをキャプチャするためにHTML要素のためのHTMLスニペットことはできません Selenium documentationには、 getAttribute()関数のみがあり、次のように記述されています。

要素の指定された属性の値を取得します。ページがロードされた後にこれが変更されたとしても、現在の値を返します。より正確には、このメソッドは、その属性が存在しない場合を除いて、指定された属性の値を返します。同じ名前のプロパティの値が返されます(たとえば、textarea要素の "value"プロパティ)。どちらの値も設定されていない場合、nullが返されます。 ...

これによると、getAttribute("value")valueという名前のHTML属性が存在しない場合にはDOMプロパティの値を返す必要があります。

そうでない場合は、タイミングの問題である可能性があります。私。値が設定される前にSeleniumによって読み取られます。コンソールで

+0

eclipseでデバッグモードで試したので、ページ同期の問題ではないと確信できます。私はページが読み込まれるのを待っていました。 getAttribute( "value")はnullを返しますが、firebugを使用してチェックすると、「値」が正しく表示されます。ノックアウトjsデータバインディングはこれで何かをしなければなりませんか? – Andy

+0

'value'プロパティがスクリーンショットにしたがって正しく設定されているので、私はそうは思わないでしょう。セレンはそれを読むことができるはずです。まだ私はKnockout.jsを使用していませんが、確かにそのことを伝えています。 –

0

私はこれが古い質問です知っているが、それは他の誰かに手を与えるかもしれない

使用この

$$("input.form-control").value 

それが必要を返す場合、あなたはWebDriverを使用してJavascriptを実行する必要がありますie

driver.ExecuteScript("var data = arguments[0].value; return data;", (Element as RemoteWebElement) 
+0

あなたの答えを書式化してください。 –

関連する問題