[英]Selenium sendKeys to the wrong input
我在 Selenium 测试中遇到了 sendKeys 方法的奇怪问题。 在我的 web 应用程序中,我有很多带有默认值的输入,我使用 findElements() 获取这些输入,然后尝试填充它们,非常简单。 为了简化,我有类似的东西:
List<WebElement> allInputs = driver().findElements(By.className("pouet"));
for (WebElement e : allInputs) {
e.clear();
e.sendKeys("pouet");
}
它可能会失败,因为有时 sendKeys() 填充了错误的输入,而 clear() 已在正确的输入上正确执行。
有没有人已经遇到过这种问题?
非常感谢 :)
这很奇怪,但它发生在我的情况下,有时即使所有字段都是唯一的并且成功找到,我的 firefoxdriver 也会在错误的字段中写入。 两次 sendKeys() 调用之间的小时间跨度解决了这个问题。 我没有使用 sleeps(您可以尝试使用Thread.sleep(5000)
进行测试以确保是这样),简单验证是否在这两个调用之间的字段中写入了正确的文本就足够了下一次 sendKeys()写在正确的领域。
遇到这种情况,对于我的情况,有时我的 clear 似乎失败了,我的 sendKeys 附加了以前的值。 所以我需要把 Thread.sleep(1000) 放在 e.clear() 和 e.sendKeys() 之间。
但是,根据您的描述,您的问题似乎更多是无法指向正确的文本字段。 您应该尝试像@acikojevic 所说的那样在 sendKeys() 之后放入睡眠。
尝试在清除之前先单击输入字段。 如果没有点击,有时该字段还没有准备好清除/输入。 所以:
e.click();
e.clear();
e.sendKeys("pouet");
我有一个案例,这件事发生了。 添加element.click()
调用没有帮助!
原来罪魁祸首不是硒。 页面上有一个脚本HTMLElement.focus()
根据条件聚焦表单中的特定元素。
所以 Selenium 实际上是在与页面上的 JavaScript 竞争以获得焦点,这导致了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.