2014-01-05 22 views
16

Webドライバを使用してアプリケーションに値を設定できません。 私のアプリケーションはフレームを使用しています。 使用次のコマンドは、私は私のテキストボックス driver.findElement(By.name("name")).clear(); の値をクリアすることができています。しかし、それには、次のコマンドを使用して任意の値を入れることはできません:同じページ上のボタンの driver.findElement(By.name("name")).sendKeys("manish");sendkeysがSelenium Webdriverで動作しない

にもかかわらずクリックコマンドの作品を​​。

この問題を解決するにはどうすればよいですか。

ありがとうございます。

+0

正しいフレームに注目していますか? – Brian

+0

どのようなエラーが表示されますか?あなたはスタックトレースを提供できますか? – Amith

+0

はい私は正しいフレームに焦点を当てています、そうでなければ次のコマンドが動作してはいけないと信じています "次のコマンドを実行する前に、デバッガモードで、" driver.findElement(By.name( "name"))これを使うことで、正しいフレームに焦点を当てるべきです。また、次のコマンドを実行する際にエラーが発生しないことは驚きです – user3162976

答えて

2

キーを送信する前に、テキストボックスをクリックしてください。

それはあなたが入力する前に、フィールド上のイベントをトリガするために、うまくいけばクリックは、フィールドでのとをクリックします()の値を入力するのSendKeysを使用すること

+0

JavaScriptを使用してクリックするにはどうすればよいですか – user3162976

+0

私の場合は動作しません – user3162976

1

使用JavaScriptを行います必要があるということかもしれません。 私は過去にフレームで同様の問題を抱えていました。 Javascriptが最善の方法です。

+0

JavaScriptを使用してクリックするにはどうすればよいですか?あなたが私にコード – user3162976

+1

を提供することができれば、私は非常に感謝しています.Javascriptは決して「最善の方法」ではないはずです。それは最後の手段にすぎないはずです。 javascriptの実行を自動化することは、アプリケーションがユーザーインタラクションを介して動作していることを実際に証明するものではありませんが、javascriptを直接起動すると機能します。私はいつもSelenium APIを使ってアクションを使ってフィールド上にマウスを移動させるなど、他のアイデアをたくさん試しています(つまり、実行よりもインタラクションを介してjavascriptをトリガーします。) –

0

sendkeys()にJavascriptを使用してみてください。 Javascriptを執行上の

WebElement element = driver.findElement(By.name("name")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 

詳細情報は、その後----

driver.switchTo().frame("pass id/name/index/webelement"); 

を使用して、フレームに JavascriptExecutor - Selenium

0

まずパスドライバ制御@見つけることができますあなたがやりたい操作を行いますフレーム内に存在するウェブ要素 -

driver.findElement(By.name("name")).sendKeys("manish"); 
21

私もhその前にその問題を広告してください。しかし、私がそれを動作させるためにしたのは、

myInputElm.click(); 
myInputElm.clear(); 
myInputElm.sendKeys('myString'); 
+0

はい、それはなぜですか?私たちが鍵の送付しようとしている要素が枠内にあり、これがセレンがそれを手助けするのに役立つかもしれないからだと思いますか?ありがとうございました! –

-2

です。一般に私は一時変数を保持しています。これはうまくいくはずです。

var name = element(by.id('name')); 
name.clear(); 
name.sendKeys('anything'); 

希望します。

0

コピーペーストもそのテキストボックスでは機能しない同じ問題が発生しました。コードの下 要素があまりにも私の作品をクリックME-

WebDriver driver = new FirefoxDriver(); 
String mobNo = "99xxxxxxxx"; 
WebElement mobileElementIrs = 
driver.findElement(By.id("mobileNoPrimary")); 
mobileElementIrs.click(); 
mobileElementIrs.clear(); 
mobileElementIrs.sendKeys(mobNo); 
0

のために正常に動作している、しかし、私が見つけたもう一つの解決策は、フォーカスを持っている要素を必要としませんJavaScriptを使用して値を入力することでした。

var _element= driver.FindElement(By.Id("e123")); 
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
js.ExecuteScript("arguments[0].setAttribute('value', 'textBoxValue')", _element); 
0

私は、あまりにも同様の問題を抱えていた私は

getDriver().findElement(By.id(idValue)).clear(); 
getDriver().findElement(By.id(idValue)).sendKeys(text); 

を使用する場合、「テキスト」completetelly想像し、入力に書き込みされなかったの値が "でした"何度か" P "別の" Pat "を書いてください...そのテストは、私はそれが回避策だっ修正し、今のJavascript

((JavascriptExecutor)getDriver()).executeScript("$('#"+idValue+"').val('"+value+"');"); 

を使用するためにやった

を失敗することは

代わりの

driver.findElement(By.id("idValue")).sendKeys("text"); 

使用、

((JavascriptExecutor)getDriver()).executeScript("$('#"+"idValue"+"').val('"+"text"+"');"); 
結構です

私のために働いた。

関連する問題