puppeteer:单击 Shadowroot 中的按钮

2023-11-26

我在测试环境中对 Shadowroot 中的元素执行操作时遇到困难。假设我有一个网络组件<my-component />它包含一个按钮<input id="my-button" type="submit" />

从 Chrome 的控制台中,我可以执行以下操作:

document.getElementsByTagName('my-component')[0].shadowRoot.querySelector('#my-button').click()

我正在努力对木偶师做同样的事情。

  it('should click the button', async () => {
    await page.goto(`https://localhost:${port}`, {
      waitUntil: ['networkidle0', 'load'],
    });

    await page.$eval('my-component', (el: Element) => {
      el.shadowRoot.querySelector('#my-button').click();
    });
  });

单击该按钮应该会向我的服务器发出一个 http 请求,该请求会检索一些数据,然后我想在 dom 中断言这些数据。该请求永远不会触发。建议?


根据这条评论傀儡队正确的方法是使用JS路径:

在 Chrome 72(当前的 Canary)中,我们引入了一个新选项 - “复制 JS 路径”,位于“复制选择器”选项旁边:

aaa

使用 JS 路径的示例:

    it('should click the button', async () => {
      await page.goto(`https://localhost:${port}`, {
        waitUntil: ['networkidle0', 'load'],
      });
    
      const button = await (await page.evaluateHandle(`<JS-path-here>`)).asElement();
      button.click();
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

puppeteer:单击 Shadowroot 中的按钮 的相关文章

随机推荐

  • 如何对hmatrix进行自动微分?

    Sooooo 事实证明从假矩阵 to hmatrix事实证明数据类型并不平凡 序言供参考 LANGUAGE RankNTypes LANGUAGE ParallelListComp LANGUAGE ScopedTypeVariables
  • 如何在 PHP 中重写 register_argc_argv ?

    我正在使用共享主机 fasthostingdirect 并且出于某种原因 他们默认关闭此标志 这意味着我无法访问 PHP 命令行参数 除非我使用 n no php info 之后标记php exe 试过ini set register ar
  • 在 matplotlib 中使用 3D 数据生成热图

    我有一个函数returnValuesAtTime返回三个列表 x vals y vals and swe vals 所有三个列表的长度相同 并且每个元素swe vals对应于一个x value from x vals and a y val
  • 如何获取当前所有正在运行的任务

    我想获取在 android 中运行的所有任务 我在 ActivityManager 中找到了 getRunningTasks 但从 android 5 0 开始 getRunningTasks 可能不会提供所有任务 在我的情况下 它提供主屏
  • 重写 Javascript 中的等价比较

    是否可以重写 Javascript 中的等价比较 我得到的最接近的解决方案是定义 valueOf 函数并在对象前面加上加号来调用 valueOf 这有效 equal x y true 但这失败了 equal x y true why doe
  • clojure.java.jdbc/延迟查询大结果集

    我正在尝试从数据库读取数百万行并写入文本文件 这是我的问题的延续数据库转储到文本文件有副作用 我现在的问题似乎是在程序完成之前不会发生日志记录 我没有懒惰处理的另一个指标是 在程序完成之前根本不会写入文本文件 根据 IRC 提示 我的问题可
  • 如何在不破坏 Maven 发布插件的情况下传递 javac 多个命令行参数(其中一些包括冒号)?

    当我忘记在 a 中声明serialVersionUIDs 时 我想让我的 Maven 构建失败Serializable班级 和javac 这很容易 javac Xlint serial Werror Source java 直接将其转换为
  • 当您有行跨度时替换行颜色

    我有这个 HTML table class altRowTable 这工作正常 直到我有一些行包含rowspan 各行不一致 所以我有这样的东西 下面的 代表一个空格 不能真正在 SOF 中做表 ID name Number 1 joe 1
  • 释放字符串后仍然可以打印它吗?

    我正在学习和测试 C 中的内存分配 我想测试如果free 叫做 我预计可能存在分段错误或指针NULL当我运行下面的程序后 但是 我仍然可以成功打印输出中的字符串 我也尝试过免费str两次 然后输出 2 发生错误 看起来之前分配的内存已经成功
  • 使用 JavaScript 或 jQuery 监听 Youtube 事件

    我有一个滑块 其中包含 4 个通过 iframe 嵌入代码嵌入的 YouTube 视频 http www youtube com embed i enablejsapi 1 我正在努力使onStateChange四个视频中任何一个的事件调用
  • 无法添加对 Outlook 2016 (Office 365) Interop (16.0.0.0) 的引用

    我正在尝试在 C NET 4 6 1 WPF 项目中添加对 Microsoft Outlook 16 0 对象库 的引用 因为我安装了 Office 2016 以前版本的对象库与 2016 版 Office 不兼容 如果我使用 Excel
  • 由于文本框 onblur 事件中的警报框而导致按钮单击事件丢失

    我创建了一个简单的 Web 表单 其中包含一个文本框和一个按钮 我已经捕获了文本框的 onblur 事件
  • 使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证

    伙计们 我的 asp net 3 5 应用程序中有一个用户控件 我在按钮单击事件上传递一些纯文本 按钮位于用户控件中 但是当我触发事件时 我收到以下错误 回发或回调参数无效 使用启用事件验证 在配置或 在 页 出于安全目的 这 功能验证参数
  • 使用Java在Windows中获取唯一的文件ID?

    我正在寻找一种在 Java 应用程序中获取唯一文件 ID 的方法 并遇到了这个 Windows 中唯一的文件标识符 现在 我尝试了 Ashley Henderson 本人 提出问题的人 提供的答案 并且在 C 中运行良好 但我需要在 Jav
  • 如何将 Visual Studio 2017 与 TFS Visual Studio 构建步骤结合使用

    我正在运行 TFS 2015 并使用 Visual Studio 构建步骤 在开发机器上 我转而使用 Visual Studio 2017 因此我也想使用 Visual Studio 2017 进行 TFS 构建 我在生成服务器上安装了 V
  • Python解压字节流?

    情况如下 我从 Amazon S3 获取压缩的 xml 文档 import boto from boto s3 connection import S3Connection from boto s3 key import Key conn
  • python del 没有释放所有内存

    在我的 python 程序中 我使用pandas读取 csv 文件并存储在内存中 data pandas read csv data csv 在运行上述命令之前 我使用以下命令检查可用内存free m输出是1704 运行上述命令后输出为72
  • 将凹壳算法转换为 C#

    所以我试图将这里找到的算法翻译为凹壳 http repositorium sdum uminho pt bitstream 1822 6429 1 ConcaveHull ACM MYS pdf 第 65 页 我已经阅读了整个内容 但我不知
  • 在C++中调用私有方法

    这纯粹是一个理论问题 我知道如果有人将一个方法声明为私有 您可能不应该调用它 我设法调用私有虚拟方法并更改实例的私有成员 但我不知道如何调用私有非虚拟方法 不使用 asm 有没有办法获取方法的指针 还有其他方法吗 编辑 我不想更改类定义 我
  • puppeteer:单击 Shadowroot 中的按钮

    我在测试环境中对 Shadowroot 中的元素执行操作时遇到困难 假设我有一个网络组件