Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium SendKeys只将文本注入输入字段几秒钟,然后文本立即从输入字段消失_Selenium_Selenium Webdriver - Fatal编程技术网

Selenium SendKeys只将文本注入输入字段几秒钟,然后文本立即从输入字段消失

Selenium SendKeys只将文本注入输入字段几秒钟,然后文本立即从输入字段消失,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我试图使用以下命令将文本结尾到名为City的输入字段(下面提到了HTML代码) 脚本运行并将城市作为布鲁塞尔插入几秒钟,然后值“布鲁塞尔”立即消失。然后,脚本将与消息一起出错 异常 线程“main”org.openqa.selenium.elementNotInteractivatableException中的异常:元素不可交互 HTML代码*基本上根据Ryan所说,您可以根据问题所在使用以下两种解决方案之一。由于您的元素不可交互 Webdriver wait = new WebDriverWa

我试图使用以下命令将文本结尾到名为City的输入字段(下面提到了HTML代码)

脚本运行并将城市作为布鲁塞尔插入几秒钟,然后值“布鲁塞尔”立即消失。然后,脚本将与消息一起出错

异常 线程“main”org.openqa.selenium.elementNotInteractivatableException中的异常:元素不可交互


HTML代码*

基本上根据Ryan所说,您可以根据问题所在使用以下两种解决方案之一。由于您的元素不可交互

Webdriver wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.id("City"))).sendKeys("Brussels");
或者使用Javascript执行器

String inputText = "Brussels";
WebElement element = driver.findElement(By.id("City"));
String js = "arguments[0].setAttribute('value','"+inputText+"')"
((JavascriptExecutor) driver).executeScript(js, myElement);

等待页面完全加载。元素正确加载后,可能会尝试在文本页面中输入文本。

我会阅读此相关帖子上的公认答案,它详细说明了此异常可以由什么产生,以及使用
webdriver
-()绕过异常的其他解决方案,我个人发现,使用
JavascriptExecutor
是我最喜欢的绕过
selenium
异常并为隐藏元素或看不见的元素设置值的方法。
String inputText = "Brussels";
WebElement element = driver.findElement(By.id("City"));
String js = "arguments[0].setAttribute('value','"+inputText+"')"
((JavascriptExecutor) driver).executeScript(js, myElement);