我在Selenium测试中遇到了一个奇怪的问题,即sendKeys方法。 在我的webapp中,我有很多带有默认值的输入,我使用findElements()得到那些输入,然后我尝试填充它们,非常简单。 为了简化,我有类似的东西:
List<WebElement> allInputs = driver().findElements(By.className("pouet"));
for (WebElement e : allInputs) {
e.clear();
e.sendKeys("pouet");
}
它可能会失败,因为有时sendKeys()填充错误的输入,而clear()已在正确的输入上正确执行。
有没有人遇到过这种问题?
非常感谢:)
答案 0 :(得分:1)
这很奇怪,但它发生在我的情况下,有时我的firefoxdriver写错了字段,即使所有字段都是唯一的并且成功找到。两个sendKeys()调用之间的小时间跨度解决了这个问题。我没有使用睡眠(您可以尝试Thread.sleep(5000)
只是为了测试以确保它是这样),简单的验证如果在这两个调用之间的字段中写入正确的文本是足够的时间,以便下一个sendKeys()写在正确的领域。
答案 1 :(得分:0)
遇到这个,对于我的情况,有时我的清楚似乎失败了,我的sendKeys追加了前一个值。所以我需要在e.clear()和e.sendKeys()之间放置Thread.sleep(1000)。
但是根据您的描述,您的问题似乎更多的是无法指向正确的文本字段。你应该尝试在sendKeys()之后进行睡眠,如@acikojevic所说。
答案 2 :(得分:0)
尝试先单击输入字段,然后再清除它。有时如果没有单击,该字段将无法清除/输入。所以:
e.click();
e.clear();
e.sendKeys("pouet");