2016-08-24 71 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

您可以使用等待概念。

隱等待:

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

或 使用顯式的等待+預期條件:

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

希望這將解決您的問題

+0

謝謝你的回答,但在我添加隱式等待後,我得到一個錯誤: _Exception在線程「主」org.openqa.selenium.TimeoutException:超時10秒後等待由By.xpath定位元素的可見性://div [@ class ='input-wrapper icon wupid'] _ 這個沒有解決問題 – Amir

+0

首先檢查xpath是否有效,你可以在Firefox中驗證。 – rajan

+0

爲了在你的框架中獲得穩定性,你應該使用明確的等待。 – rajan

0

考慮到你的HTML代碼,有文本字段僅在輸入標籤中。所以你可以使用這個xpath:「//輸入[@ class ='only-numbers ltr']」並使用明確的等待。

相關問題