在尝试变通方法之前,作为健全性检查,请确保在您发送密钥时输入字段已准备好接收输入。您也可以在调用 SendKeys 之前尝试清除该字段。我假设您看到您的字符串被截断,而不是字符丢失或带有某些工件的前缀(如占位符文本或先前测试的剩余输入)。
如果这不起作用,一些解决方法:
使用 JavaScript 设置输入字段的值,而不是调用 SetKeys。在我执行此操作的某些网站上,除非我还触发输入更改事件,否则实际上无法识别输入值。C# 中的示例。希望您需要的唯一更改是将 ExecuteScript 改为 executeScript。
driver.ExecuteScript("var exampleInput = document.getElementById('exampleInput'); exampleInput.value = '" + testInputValue + "'; exampleInput.dispatchEvent(new Event('change'));");
您当然可以将其分成两行,第一行用于设置值,第二行用于调度事件。
单独发送每个密钥。这是我从有关此问题的线程中多次看到的解决方法。
for (var i = 0; i < first_name.length; i++) {
name_field.sendKeys(first_name.charAt(i));
}