【发布时间】:2017-10-24 14:59:30
【问题描述】:
我正在尝试在编辑框中输入文本,但有时它只输入了一半的文本(无法输入前几个字符)
即对于下面的代码enterFirstName("12345678901234567890123456789012345678901") 只输入30 左右字符而不是41
By firstNameEditbox = By.id("firstName");
public void enterFirstName(String firstName){
WebDriverWait wait = new WebDriverWait(driver, timeout);
element = wait.until(ExpectedConditions.presenceOfElementLocated(identifier));
wait.until(ExpectedConditions.visibilityOf(element));
element.sendKeys(firstName);
findElementWithWait(firstNameEditbox).
}
网址:https://mpower.tvo.org/educators/#/signup/
WebDriver 版本: 3.5.2
浏览器: Chrome 58.0.3029.110(64 位)
Chrome 驱动程序版本: 2.26.436382
知道为什么会发生这种情况或如何解决这个问题吗?
【问题讨论】:
-
很可能是分配给该字段的所有侦听器的副作用。为
keydown事件分配了3 次相同的侦听器。您可以尝试在每个字符上调用sendKeys。另一种方法是使用脚本注入来模拟粘贴:var elm=arguments[0], txt=arguments[1]; elm.focus(); elm.value=txt; elm.dispatchEvent(new Event('change')); -
你是怎么知道听众的,如果你能解释一下,将来会对我有帮助。
-
检查一个元素,所有的监听器都在右侧面板的“事件监听器”选项卡中。
-
@FlorentB。谢谢。该领域有很多事件侦听器,而且很多都是重复的。现在我已经申请了通过字符输入字符串的解决方案。这不是完美的解决方案,但现在可以使用
标签: selenium selenium-webdriver webdriver selenium-chromedriver