gpt4 book ai didi

java - Selenium sendKeys 没有发送所有字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:24:57 25 4
gpt4 key购买 nike

我使用 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() 并添加 hibernate 时间。它们也不起作用。

我从这篇文章中得到一个输入字符 1 到 1 的想法:How to enter characters one by one in to a text field in selenium webdriver?

它起作用了,但这意味着我必须将所有代码从 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 无法处理它们。

作为解决方法,您需要发送单个字符,每个字符之间有一个小的延迟。

关于java - Selenium sendKeys 没有发送所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com