Java Selenium sendkeys使用Chrome驱动程序删除字符
带有Chrome驱动程序的Selenium sendkeys会删除字符“2”和“4”。其他字符也可以。当我使用其他浏览器(IE或FF)时,一切正常 代码: 结果:输入框中填充了Java Selenium sendkeys使用Chrome驱动程序删除字符,java,google-chrome,selenium-webdriver,selenium-chromedriver,Java,Google Chrome,Selenium Webdriver,Selenium Chromedriver,带有Chrome驱动程序的Selenium sendkeys会删除字符“2”和“4”。其他字符也可以。当我使用其他浏览器(IE或FF)时,一切正常 代码: 结果:输入框中填充了 13567890 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 缺少字符2和4,其他字符填写正确 我使用Windows 7 64位,Chrome版本29.0.1547.57 m,ChromeDriver win32(v2.2.215849.dyu)-最新版本
13567890 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
缺少字符2
和4
,其他字符填写正确
我使用Windows 7 64位,Chrome版本29.0.1547.57 m,ChromeDriver win32(v2.2.215849.dyu)-最新版本。调查您是否来自捷克共和国,我将大胆假设,您的键盘默认设置为捷克语 当我的系统默认使用捷克语键盘时,
sendKeys
也出现了一些奇怪的问题。自从我把默认设置改为英语后,问题就消失了
如果这没有帮助,请提供信息如果您尝试以下方法,将会发生什么:
name.sendKeys("2");
name.sendKeys("22222222");
name.sendKeys("4");
name.sendKeys("44444444");
name.sendKeys("424242");
在使用VNC连接到VM,然后以这种方式运行Selenium测试时,我也遇到了这个问题
VNC实际上是删除字符的一个。一旦我使用VirtualBox控制台转到与VM的直接连接。。。它工作得很好 这是一个老问题,但仍然有效。我使用Chrome驱动程序v2.53 看起来这些键正在一个接一个地发送到浏览器(类似于单独的keyDown事件)。如果发生得太快,则可以观察到以下两种结果之一:
- 字符移位
- 缺少字符
protected void sendKeys(final WebElement element, final String keys) {
for (int i = 0; i < keys.length(); i++){
element.sendKeys(Character.toString(keys.charAt(i)));
waitUntil(attributeContains(element, "value", keys.substring(0, i)));
}
}
清除操作可能发生在以下四个位置之一:
- 在发送字母“a”之前
- 在发送字母“b”之前
- 在发送字母“c”之前
- 在发送字母“c”之后
对于一个简单的任务,要执行很多操作。然而,这将使测试更加稳定 我也有同样的问题。我最终在循环中调用sendkeys,直到插入正确的值。以下是我所做的:
WebElement name = driver.findElement(By.xpath(...));
this.sendkeys(name,"yourValue");
private void sendkeys(WebElement ele, String val) throws
InterruptedException
{ ele.clear();
while(true)
{ ele.sendKeys(val);
if(ele.getAttribute("value").equals(val))
break;
else
{ ele.clear();
Thread.currentThread();
Thread.sleep(3000);
}
}
Thread.currentThread();
Thread.sleep(3000);
}
希望这有帮助。您可以使用java脚本发送文本。请参阅下面的代码片段
public void sendTextToFieldWithJS (String str, WebElement element){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value='" + str + "';", element);
}
您是否尝试发送包含许多
sendKeys
调用的字符串?有什么不同吗?我也有这个问题,但chrome本身不会接受一封信——今天是“s”。似乎是铬本身,所以硒不能做任何事情。接受大写字母“S”。非常奇怪的行为。一旦我关闭此驱动程序,它将重新开始工作。俄语键盘存在相同问题,我已提交问题:
WebElement name = driver.findElement(By.xpath(...));
this.sendkeys(name,"yourValue");
private void sendkeys(WebElement ele, String val) throws
InterruptedException
{ ele.clear();
while(true)
{ ele.sendKeys(val);
if(ele.getAttribute("value").equals(val))
break;
else
{ ele.clear();
Thread.currentThread();
Thread.sleep(3000);
}
}
Thread.currentThread();
Thread.sleep(3000);
}
public void sendTextToFieldWithJS (String str, WebElement element){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value='" + str + "';", element);
}