2016-08-24 12 views
0

テキストフィールドにテキスト(111)を入力しようとしていますが、ほぼすべての要素ロケータ、JavaScriptのトリックを試しています。Selenium Webdriver:テキストフィールドにテキストを入力する - 要素が表示されない

は、私が試した:

driver.findElement(By.xpath("//div[@class='input-wrapper icon wupid']")).sendKeys("111"); 
Thread.sleep(2000); 

エラー:

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: element not visible

htmlコード:

<form id="form-resetpass" method="post" action="" _lpchecked="1"> 
<div class="input-wrapper icon wupid"> 
<label for="wupid">תעודת זהות</label> 
<input class="only-numbers ltr" type="text" value="" maxlength="9" name="wupid" style="background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: left center;"> 
</div> 

なぜ私は値を入力してくださいカント?

+0

ドライバがレンダリングエンジンより高速です。アイテムがロードされる(つまり、表示される)まで待ってからアクセスする必要があります。また、htmlに表示されているため、CSSから非表示になっている可能性があります。 –

答えて

1

下記のコードを試してください.C#ではないので、java形式に変換してください。

WebDriverWait mywait = new WebDriverWait(driver,TimeSpan.FromSeconds(30)); 
IWebElement txtbox = mywait.Until(ExpectedConditions.ElementIsVisible(By....)); 
txtbox.SendKeys("111"); 
3

これについては、wait conceptを使用できます。

暗黙待ち:あなたが明示的に待ち+期待条件使用

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

または :これはあなたのhtmlコードを考慮すると、あなたの問題

+0

あなたの答えをありがとう、しかし私は暗黙の待機を追加した後私はエラーがあります: スレッド "main"での_Exception org.openqa.selenium.TimeoutException:By.xpathにある要素の可視性を待って10秒後にタイムアウトしました:/div [@ class = 'input-wrapper icon wupid'] _ これで問題は解決しない – Amir

+0

xpathが有効かどうかを最初に確認すると、Firefoxで確認できます。 – rajan

+0

フレームワークで安定性を得るには、明示的な待機を使用する必要があります。 – rajan

0

を解決する

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement element = wait.until(
     ExpectedConditions.visibilityOfElementLocated(By.id("someid"))); 

は希望を、テキストフィールドがあります入力タグ内にのみ存在します。したがって、このxpathを使用することができます: "//入力[@クラス= 'のみ - 番号ltr']"と明示的な待機を使用します。

関連する問題