Selenium Webdriver:在ul li文本框中输入元素

时间:2014-08-12 12:49:17

标签: java textbox selenium-webdriver

我正在尝试访问输入字段,但我收到一条错误消息:

元素目前不可见。 当我尝试使用sendkeys方法在输入字段中键入元素时,它仍然不会导致任何结果。该元素的html代码如下:

<ul class="tagedit-list "><li class="tagedit-listelement tagedit-listelement-new"><input type="text" name="tag[]" value="" id="tagedit-input" maxlength="30" disabled="disabled" class="tagedit-input-disabled ui-autocomplete-input" dir="ltr" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"><tester style="position: absolute; top: -9999px; left: -9999px; width: auto; font-size: 14px; font-family: Arial; font-weight: normal; letter-spacing: normal; white-space: nowrap;"></tester><span id="addTagLabel">Add a Tag<span></span></span></li></ul>

请指导我这里可能出现的问题。谢谢你的时间。

3 个答案:

答案 0 :(得分:0)

请提供您尝试过的代码或链接。

它正在发生,因为您尝试与之交互的元素不是 可见。 要解决此问题,您需要做一些事情来使元素可见 第一。手动测试时,请使用inspect元素检查,使元素可见。

答案 1 :(得分:0)

向我们提供代码,我们可能会提供帮助。问题是该元素不可见,您可以使用Explicit wait

以下是Java中的一些示例代码,以确定它是否可能在正确的方向上推动您,

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id));

如果没有,您是否可以提供有关元素不可见,页面加载等原因的更多信息? 另一种可能是使用JavaScriptExecutor

答案 2 :(得分:0)

我找到了解决方案......

隐藏了文本框的可见性,因此我使用jquery使该元素可见,并在该元素中输入文本....现在它工作正常

我使用的代码是

((JavascriptExecutor)driver).executeScript("$J(\".tagedit-list li.tagedit-listelement-new input.tagedit-input-disabled\").css(\"display\", \"block\");"); 

((JavascriptExecutor)driver).executeScript("$J(\".tagedit-list li.tagedit-listelement-new input.tagedit-input-disabled\").val(\"test\");");

((JavascriptExecutor)driver).executeScript("$J(\"#addTag\").css(\"display\", \"block\");");

driver.findElement(By.id("addTag")).click();

谢谢......伙计们