seleniumsendKeys不发送所有字符

我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子:

    public void enterCustomerDetails()

{

txtFirstName.sendKeys("Joh201605130947AM");

txtSurname.sendKeys("Doe201605130947AM");

txtEmail.sendKeys("johndoe@gmail.com");

}

我也尝试使用executeScript。没用 它可以输入完整的字符,但是表格认为该字段为空。

public void forceSendKeys(WebElement element, String text)

{

if (element != null)

((JavascriptExecutor) this.webDriver).executeScript("arguments[0].value=arguments[1]", element, text);

}

public void enterCustomerDetails()

{

forceSendKeys(txtFirstName, "Joh201605130947AM");

forceSendKeys(txtSurname, "Doe201605130947AM");

forceSendKeys(txtEmail, "johndoe@gmail.com");

}

我还尝试在.sendKeys之前使用.click()并增加睡眠时间。他们也没有工作。

它有效,但这意味着我必须将所有代码从sendKeys重写为新函数:

    public void sendChar(WebElement element, String value)

{

element.clear();

for (int i = 0; i < value.length(); i++){

char c = value.charAt(i);

String s = new StringBuilder().append(c).toString();

element.sendKeys(s);

}

}

public void enterCustomerDetails()

{

sendChar(txtFirstName, "Joh201605130947AM");

sendChar(txtSurname, "Doe201605130947AM");

sendChar(txtEmail, "johndoe@gmail.com");

}

如果你们知道更好的方法,请帮忙!:)

回答:

我认为这是由Angular2问题引起的https://github.com/angular/angular/issues/5808

当输入事件到达得太快时,Angular无法处理它们。

解决方法是,您需要发送单个字符,每个字符之间的延迟很小。

以上是 seleniumsendKeys不发送所有字符 的全部内容, 来源链接: utcz.com/qa/422701.html

回到顶部