我试图在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”); 我得到输出为
答案 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);
`