2016-07-29 6 views
1

私は、セレクタ付きw/Sを使用してアプリケーションへのログインを自動化しようとしています。私はこれを行うための適切な方法は以下のようなことを知っている:ログインコンテナでキーが送信されない

_ngDriver.FindElement(By.Id(inputTextId)); 
_ngDriver.FindElement(By.Id(inputTextId)).Clear(); 
_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(inputText); 

私の問題は私のコードは、最初の行の要素を見つけたが、その後、私はクリア()またはのSendKeys(いずれかを実行しようとすると壊れるということです)このエラーが表示されます:

unknown error: cannot focus element 

(Session info: chrome=51.0.2704.103) 
    (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x86_64) 

もう1つ。 ClearまたはSendKeysではなくClick()を配置すると、正しいフレームが表示されていることがわかります。誰かが似たようなことをやり取りし、回避策を知っていますか?

答えて

2

cannot focus elementエラーは通常起こります。 inputTextId IDロケータが実際にinput要素と一致することを確認してください。

また、希望の要素がこのIDを持つ唯一の要素であるかどうかを確認してください。

+0

ありがとう!ページには、入力しようとしていた要素とほとんど同じ要素が隠されていました。私はクラスとIDの両方を使用して私のキーを送信する方法で終わった。 –

0

することができます次の手順を試してください。

_ngDriver.FindElement(By.Id(inputTextId)); 
_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(Keys.TAB); 
_ngDriver.FindElement(By.Id(inputTextId)).Clear(); 
_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(inputText); 

OR:あなたは非入力要素にclear()方法を、キーを送信したり、発行しようとすると、

_ngDriver.FindElement(By.Id(inputTextId)); 
_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(Keys.TAB); 
_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(inputText); 
1

例外として、textbaxには値を入力する前にフォーカスが必要であり、これは絶対に正しいClick()を使用して行うことができます。一つは、より多くのあなたのようにSendKeysから直接フォーカスのために試すことができます。

_ngDriver.FindElement(By.Id(inputTextId)).SendKeys(Keys.ENTER, inputText); 

: - 私はあなたが同じページ上の要素を持ついくつかのアクションを行っている場合は、常に要素を格納する習慣を作る示唆しています要素を何度も何度も見つけて、必要な行動を取る代わりに、可変参照に変換します。

希望する:...

関連する問題