Java Selenium:清除输入框默认值并填入自定义值问题求助
解决Selenium清空带默认值输入框的问题
以下是几个实测有效的解决思路,针对你遇到的离开单元格后默认值恢复的情况:
用JavaScript直接修改输入框值
很多时候输入框的默认值是前端通过blur(失去焦点)事件重置的,用JS直接赋值可以绕过这些前端逻辑,一步到位:// 先获取JS执行器 JavascriptExecutor js = (JavascriptExecutor) driver; // 直接清空输入框value js.executeScript("arguments[0].value = '';", inputGross); // 再输入目标值 inputGross.sendKeys(gross); // 或者一步直接设置目标值 // js.executeScript("arguments[0].value = arguments[1];", inputGross, gross);模拟真实用户的全选替换操作
试试先点击聚焦输入框,再用全选快捷键选中默认内容,直接输入新值覆盖,有些前端只认这种真实交互的输入:inputGross.click(); // 先聚焦 // 全选内容(Windows用CONTROL,Mac用COMMAND) inputGross.sendKeys(Keys.chord(Keys.CONTROL, "a")); inputGross.sendKeys(gross); // 直接输入新值覆盖强制触发输入框的change事件
部分页面需要输入框触发change事件才会保存输入状态,避免离开后重置,输入完成后手动触发这个事件:inputGross.sendKeys(gross); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].dispatchEvent(new Event('change'));", inputGross);检查并移除输入框的只读/禁用属性
如果输入框被设置了readonly或disabled属性,常规操作会失效,先移除这些属性再操作:JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].removeAttribute('readonly');", inputGross); js.executeScript("arguments[0].removeAttribute('disabled');", inputGross); // 之后再执行清空和输入 inputGross.clear(); inputGross.sendKeys(gross);
内容的提问来源于stack exchange,提问作者Killig
相关产品推荐
相关产品推荐

