2017-05-23 10 views
1

C#とSeleniumフレームワークを使用して自動テストを作成しようとしましたが、入力フィールドのテキストを取得できません。 要素のHTML:私のブラウザでxPathで入力テキストを取得

<input id="WorkPlacePageEmployerKPPcb96e63d-c837-4e7f-827b-2e7d49370f20TextEdit-el" class="base-edit-input ts-box-sizing" placeholder="Empty" value="" style="" tabindex="1" disabled="disabled" type="text"> 

私はそれが内部にいくつかのテキストが、次のコード

inputElement.Text 

戻り、空の文字列を持っていることがわかります。 inputElementOpenQA.Selenium.IWebElementタイプです。

私は間違っていますか?

+0

あなたには、いくつかのスクリーンショットを添付したり、そのテキストを提供していただけますブラウザに表示されますか?ブラウザでテキストが「Empty」の場合、私の答えに従ってください。 –

答えて

1

<input type="text">には、テキストコンテンツはありませんが、ユーザーの後に変更する属性"value"はまた、あなたは、この目的のためにJavaScriptExceutorを使用する場合があります

inputElement.GetAttribute("value") 

inputElement.Text 

を交換してみたキーに

を送信します。

IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
string inputText = (string)js.ExecuteScript("return arguments[0].value", inputElement); 
+0

同じもの。テキストが内部にあるフィールドには空の値があります。 – StuffHappens

+0

更新された答えのように 'JavaScript'を実装しようとします。また、明示的な待機で入力値が変更されるまで待つこともできます。 – Andersson

+0

'inputElement.GetAttribute(" value ")'は私のために働きます。しかし、私がinputElementをブラウザ(firefox)で調べると、私はポストを開始すると言ったので空の値を持っています。ブラウザで値の属性が表示されないのはなぜですか? – StuffHappens

1

あなたに見えるブラウザで表示されるテキストが「空です」と思われます。ブラウザ上で表示されるテキストを取得するためにコードの下に使用してください:

inputElement.GetAttribute("placeholder") 

@Anderssonにより示唆されるようにまた、あなたは、この目的のためにJavaScriptExceutorを使用する場合があります。

IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
string inputText = (string)js.ExecuteScript("return arguments[0].placeholder", inputElement); 
関連する問題