Zuz*_*ova 14 java google-chrome selenium-chromedriver selenium-webdriver
使用Chrome驱动程序的Selenium sendkeys会删除字符"2"和"4".其他字符都可以.当我使用其他浏览器(IE或FF)时,一切正常.
码:
WebElement name = driver.findElement(localizator);
name.clear();
name.sendKeys("1234567890 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ");
Run Code Online (Sandbox Code Playgroud)
结果:输入框填充
13567890 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
Run Code Online (Sandbox Code Playgroud)
字符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");
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,但仍然有效。我使用 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)));
}
}
Run Code Online (Sandbox Code Playgroud)
它可靠且运行速度足够快。更重要的是,当我们想在发送键之前清除输入字段时,可能会发生相同的事件转移,例如:
element.clear();
element.sendKeys("abc");
Run Code Online (Sandbox Code Playgroud)
清除操作可能会发生在以下四个地方之一:
我建议始终检查我们刚刚执行的操作是否已成功完成,例如:当我们想要清除输入字段时,最好的做法是:
为一个简单的任务执行很多操作。但是,它会使测试更加稳定。
我遇到过同样的问题。我最终在循环内调用 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);
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
6537 次 |
| 最近记录: |