Selenium sendKeys 不发送所有字符

2024-01-06

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

    public void enterCustomerDetails()
    {   
        txtFirstName.sendKeys("Joh201605130947AM");
        txtSurname.sendKeys("Doe201605130947AM");
        txtEmail.sendKeys("[email protected] /cdn-cgi/l/email-protection");
    }

我也尝试过使用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, "[email protected] /cdn-cgi/l/email-protection");
        }

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

我从这篇文章中得到了一个逐一输入字符的想法:如何在 selenium webdriver 的文本字段中一一输入字符? https://stackoverflow.com/questions/24492795/how-to-enter-characters-one-by-one-in-to-a-text-field-in-selenium-webdriver/24522875

它有效,但这意味着我必须将所有代码从 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, "[email protected] /cdn-cgi/l/email-protection");
    }

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium sendKeys 不发送所有字符 的相关文章

随机推荐

  • 如何使用 LINQ 选择最新且不同的记录?

    我正在尝试使用 LINQ 从状态历史记录中获取记录的最新状态 我的订单出现问题 或者可能我完全偏离了目标 My Code Dim LatestStatusTable From RecordHistoryTable In db RecordH
  • 从字符串中删除重复项

    我正在尝试从 Java 中的字符串中删除重复项 这是我尝试过的 public void unique String s put your code here char newArray s toCharArray Set
  • 如何删除jsPlumb连接

    我正在玩jsplumb http jsplumb org jquery demo html 但我无法删除只有一个 div 的 id 的两个 div 之间的连接 要删除连接 请使用以下代码 jsPlumb deleteConnection c
  • 这是预期的行为吗

    如果这是一个模糊的问题 我很抱歉 因为我是 R 新手 在尝试 R 时 我发现了一个奇怪的行为 当我创建一个像这样的函数时 myfunction lt function a b print a b 并这样称呼它 myfunction b 10
  • 在 C++ 中以正确的编码获取字符串

    我之前问过类似的问题 但我仍然在 C 编码方面遇到麻烦 我尝试尽可能地描述问题 我有一个 C 客户端 通过 TCP 与 C 服务进行通信 现在我需要在消息框 Win32 API 中显示来自服务的消息 C 服务发送的字节采用 UTF 8 编码
  • 如何包含另一个文件夹中的文件?

    在我当前的项目中 我已将类文件和头文件分开 我的项目结构目前如下所示 Project Source src 类1 cpp 类2 cpp main cpp Header include class1 h class2 h 我的问题是我不知道如
  • 如何从 WMV 文件中提取特定帧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 HomeVC 中快速赋予 xib 单元按钮操作

    我已经创建了 xib collectionview 单元 并且我能够在 HomeVC 中使用它的所有值 如下所示 class HomeVC UIViewController UICollectionViewDelegate UICollec
  • 如何在 CodeIgniter 中从另一个模型继承模型

    我在我的项目中使用 codeigniter 我有一个类模型 我称之为 Genesis 如下所示 class Genesis model extends CI Model function construct parent construct
  • 返回 LINQ 结果时何时调用 ToList 的经验规则

    我正在寻找通话的经验法则ToList ToArray MemoizeAll Rx on IEnumerables 而不是返回时返回查询本身IEnumerable东西 我经常发现最好只返回查询并让调用者决定是否需要列表 但有时由于 linq
  • Spark 2.x + Tika:java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.ArchiveStreamFactory.detect

    我正在尝试解决 Apache Tika gt v 1 14 解析作业的 Spark submit 类路径运行时问题 问题似乎涉及 Spark Submit 类路径与我的 uber jar 平台 CDH 5 15 Spark 2 3 通过 C
  • 如何通过Kafka流式传输大文件?

    我正在将基于 ACID 的整体架构迁移到基于事件的微服务架构 在单体应用中 潜在的大文件存储在数据库中 我想与微服务共享此信息 包括文件内容 我的方法是将文件分割成编号块并发送多条消息 例如 1FileCreatedMessage带有元数据
  • 有人可以证实我对 ASP.NET 生命周期的理解吗?

    我的目标是找到一种方法在创建页面之前的最后一刻更新页面标题 我有一个母版页和一个内容占位符 它们始终包含具有特定属性的页面 该属性可以在代码中的任何位置更新 但我希望该标记的最终值是 html 标题 该页面的预渲染事件是设置标题的最佳位置吗
  • 带时区的 Strptime

    我有一个我解析的字符串DateTime strptime 字符串中日期的时区是 CET 但 Ruby 创建了一个 UTC DateTime 对象 当然它有 2 小时的偏移量 目前我正在解决这个问题DateTime strptime chan
  • 服务生成器改造

    有人可以帮助我理解createService下面代码中的方法 我需要了解方法的参数 Class 是什么S以及下面的深入代码 public class ServiceGenerator public static final String A
  • IE 中表格的 jQuery UI 性能问题

    我在让 UI 代码在 IE 中正常运行时遇到问题 我有一个表 值矩阵 每个单元格可以为空或包含项目列表 我希望用户能够在单元格之间拖动项目 所以我的 HTML 看起来像这样 table tr td td th col 1 th th col
  • 运行 HCatalog 时出错

    A LOAD eventnew txt USING HCatalogLoader 2015 07 08 19 56 34 875 主要 错误 org apache pig tools grunt Grunt 错误 1070 无法使用导入解析
  • 对话流(API.ai)中的数据上下文在哪里

    我一直在阅读有关对话流的内容 但有一件事我仍然不清楚 我将尝试举一个例子 我想实现如下转换 User Hello Google what are some interesting cities Bot Hello there Sydney
  • 卷曲错误“没有替代证书..”

    我们只有一台托管在 Amazon 的服务器 开发服务器 出现问题 通过运行以下命令向特定域发出curl 请求时会出现问题 gt curl https api plivo com 结果是 curl 51 SSL 没有替代证书主题名称与目标主机
  • Selenium sendKeys 不发送所有字符

    我使用 Java Selenium 和 Chrome 进行自动化测试 我们的开发人员最近将我们的 UI 从 AngularJS 升级到 Angular2 不确定这是否重要 但从那时起 sendKeys 就在文本字段中输入不完整的字符 这是一