使用Selenium无法为带pattern的number类型输入框赋值,求解决方法
解决方法
针对你遇到的sendKeys仅支持字符串,但要给带pattern="[0-9]*"的number输入框赋值的问题,有几种可行方案:
直接将数字转为字符串传入sendKeys
虽然sendKeys要求参数是字符串,但number类型输入框本身支持接收纯数字字符串,且你的pattern="[0-9]*"正好匹配这类字符串。只需把要输入的数字转成字符串即可,比如:WebElement input = driver.findElement(By.id("textFieldLength")); input.sendKeys("123"); // 直接传入数字的字符串形式这种方法简单直接,大部分场景下都能生效。
通过JavaScript直接设置输入框值
如果需要直接传入数值类型(而非字符串),可以用executeScript绕过sendKeys的限制,直接操作DOM设置输入框的value属性:// 方式1:通过ID定位并赋值 driver.executeScript("document.getElementById('textFieldLength').value = 123;"); // 方式2:传入已定位的元素和数值参数 WebElement input = driver.findElement(By.id("textFieldLength")); driver.executeScript("arguments[0].value = arguments[1];", input, 123);这种方法不需要模拟键盘输入,适合需要直接设置数值的场景,同时也能满足
pattern的校验要求。使用Actions类模拟按键输入
如果你需要模拟真实的键盘按键行为(比如触发输入框的oninput或change事件),可以用Actions类逐个输入数字字符:WebElement input = driver.findElement(By.id("textFieldLength")); Actions actions = new Actions(driver); actions.sendKeys(input, Keys.DIGIT1, Keys.DIGIT2, Keys.DIGIT3).perform();这种方式本质还是输入字符串,但模拟了真实的按键操作,能触发输入框的原生事件。
内容的提问来源于stack exchange,提问作者jijesh vu
相关产品推荐
相关产品推荐

