Selenium Webdriver:在文本字段中输入文本 - 元素不可见

时间:2016-08-24 08:12:29

标签: java selenium selenium-webdriver

我正在尝试将文本(111)输入到文本字段中,我尝试了几乎所有元素定位器,Javascript技巧和文本都没有输入到字段中。

我试过了:

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

错误:

  

线程中的异常" main"   org.openqa.selenium.ElementNotVisibleException:元素不可见

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>

为什么我不能输入值?

3 个答案:

答案 0 :(得分:3)

你可以使用wait概念。

隐含等待:

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

或 您使用显式等待+预期条件:

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

希望这能解决您的问题

答案 1 :(得分:1)

请尝试以下代码。请注意,它不是在C#中,请将其转换为java格式。

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

答案 2 :(得分:0)

考虑到您的html代码,输入标记中只有文本字段。所以你可以使用这个xpath:“//输入[@ class ='only-numbers ltr']”并使用显式等待。