我正在研究selenium webdriver,我需要输入文本而不使用sendkeys方法,因为搜索弹出文本字段是隐藏的。所以我在下面写了代码:
第一种方式:((JavascriptExecutor)driver).executeScript("document.getElementByXpath('//input[@class='form-control input-small input-inline']').value='TextValue'");
第二种方式:
JavascriptExecutor jse = (JavascriptExecutor) driver;
//jse.executeScript("document.getElementByXpath('//input[@class='form-control input-small input-inline']').value ='abcd';");
第三种方式:
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].type ='search';",chemObject.getSearchPopup());
但是我在标题中提到语法错误。
答案 0 :(得分:6)
你的第一个产生JavaScript错误,原因是混合的单引号,你不会从Java代码中看到,直到执行JS。
最简单的解决方法是替换:
((JavascriptExecutor)driver).executeScript("document.getElementByXpath('//input[@class='form-control input-small input-inline']').value='TextValue'");
使用:
((JavascriptExecutor)driver).executeScript("document.getElementByXpath(\"//input[@class='form-control input-small input-inline']\").value='TextValue'");
然而,它仍然不适合你(也不是你的第二次尝试),因为getElementByXpath
不是JavaScript DOM方法。
此处very similar thread涵盖了这一点。