Selenium报错:Element is not reachable by keyboard,日期输入失败
解决Selenium中ElementNotInteractableException(日期输入框无法输入)的问题
遇到ElementNotInteractableException这个报错,大概率是你定位到的日期输入框虽然存在,但当前状态不允许键盘交互——比如元素被隐藏、被其他组件遮挡,或是这类输入框绑定了日历选择器,本身设置为只读,不让直接手动输入。针对你的场景,试试下面这些实用解法:
方法1:等待元素完全就绪后再操作
有时候页面DOM加载完成了,但元素还没完全进入可交互状态,先加个显式等待确保元素可点击:
WebDriverWait wait = new WebDriverWait(driver, 10); WebElement sdate = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[contains(@name,'dateOfServiceInput')]"))); sdate.sendKeys("20180531");
方法2:用JavaScript直接修改元素值
如果输入框是只读属性(常见于绑定日历组件的场景),可以绕过键盘交互,直接通过JS设置元素的value值:
WebElement sdate = driver.findElement(By.xpath("//input[contains(@name,'dateOfServiceInput')]")); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].value = '20180531';", sdate);
方法3:先激活元素再输入
有些输入框需要先点击激活焦点,才能接收键盘输入,试试这个流程:
WebElement sdate = driver.findElement(By.xpath("//input[contains(@name,'dateOfServiceInput')]")); sdate.click(); // 激活输入框 sdate.clear(); // 清空原有内容(如果存在) sdate.sendKeys("20180531");
方法4:排查是否有遮挡元素
检查页面上是否有弹窗、遮罩层或者其他浮层覆盖在日期输入框上方,如果有,先关闭或处理掉这些遮挡元素,再进行输入操作。
内容的提问来源于stack exchange,提问作者Charan Raz
相关产品推荐
相关产品推荐

