无法在selenium中为禁用的元素使用发送密钥

时间:2015-07-14 15:58:19

标签: java selenium selenium-webdriver sendkeys

我试图在selenium中编写代码的输入字段:

input class="tt-hint" type="text" disabled="" spellcheck="off" autocomplete="off" style="position: absolute; top: 0px; left: 0px; border-color: transparent; box-shadow: none; background: none repeat scroll 0% 0% rgb(255, 255, 255);"

我的代码是:

WebElementy inp= driver.findElement(By.className("tt-hint"));

inp.sendKeys(new String[] { "mo" });

但上面的代码不起作用。我一直得到的错误是:

  

线程“main”中的异常org.openqa.selenium.InvalidElementStateException:元素被禁用,因此不能用于操作

感谢任何帮助。

我已将代码修改为

  

JavascriptExecutor js =(JavascriptExecutor)驱动程序;           js.executeScript( “参数[0] .removeAttribute( '禁用')”,INP);

     

inp.sendKeys( “MO”);   我得到输出为Output

3 个答案:

答案 0 :(得分:1)

例外说明了一切。该元素尚未准备好接受任何交互和DISABLED。 JavaScript只是这里的选择。我会删除true属性,然后使用disabled

sendKeys()

答案 1 :(得分:1)

Javascript是@ Saifur所说的唯一选择。但是你也喜欢这样 删除已禁用的属性或使用javascript设置值本身

 WebElement inp = driver.findElement(By.className("tt-hint"));
    //Option 1 remove the disabled attribute
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("arguments[0].removeAttribute('disabled')",inp);
    inp.sendKeys("val");

    //Option 2 go for javascript set value
     js.executeScript("arguments[0].value=arguments[1]",inp,"val");

答案 2 :(得分:1)

下面是Selenium C#的代码,用于隐藏的Textbox / TextArea

IWebElement element;
IJavaScriptExecutor js = (IJavaScriptExecutor)Driver;
js.ExecuteScript("arguments[0].value=arguments[1]", element, inputValueYouWantToPlace);

某些控件将无法识别给定的文本,并给出诸如“请提供输入值”之类的错误-在这种情况下,请在使用SendKeys()发送值之前启用该元素 `

js.ExecuteScript("arguments[0].removeAttribute('disabled')", input);
js.ExecuteScript("arguments[0].click()", element);
element.SendKeys(inputValueYouWantToPlace);

`