【问题标题】:Cannot click on elements programmatically in WhatsApp web无法在 WhatsApp Web 中以编程方式单击元素
【发布时间】:2019-04-07 13:21:45
【问题描述】:

为什么无法使用 JavaScript .click() 方法点击 WhatsApp 网页 (https://web.whatsapp.com) 上的任何元素?我正在采取的步骤如下:

  1. 假设二维码验证完成,访问https://web.whatsapp.com
  2. 找到显示搜索或开始新聊天的搜索栏,这是一个输入元素,并在其上触发.click()

我能够找到搜索输入字段,因为它具有唯一的 title搜索或开始新聊天,但是当我尝试在 Chrome 的 DevTools 控制台中单击它时,什么都没有发生。

首先我认为我可能会点击错误的元素。可以肯定的是,我在 Chrome 上安装了 Katalon Recorder 自动化扩展。然后我记录了所采取的步骤(浏览到 WhatsApp 网页,点击搜索框)。在 Katalon 中播放例程会按预期单击搜索框。我复制了 Katalon 记录的 Xpath 表达式,并将整个内容粘贴到document.evaluate()。原来,它与querySelectorAll 捕获的输入元素相同。

在浏览器控制台中,我正在运行以下代码:

let xPath = "(.//*[normalize-space(text()) and normalize-space(.)='Search or start new chat'])[1]/following::input[1]";
let result = document.evaluate(xPath, document);
let searchBox = result.iterateNext();
searchBox.click();

那么,您知道为什么.click() 无法在 WhatsApp 网页上运行吗?我还想知道 Katalon 的不同之处 - 允许它点击所需的元素。我可以在无头浏览器中执行此操作吗?

【问题讨论】:

  • 您可以添加您尝试使用的代码吗?
  • @GerardoBLANCO 问题已用代码更新。
  • 看起来searchBox 为空
  • 不是我的情况:imgur.com/a/nF5NSbR
  • 你预计会发生什么?

标签: javascript automation webdriver browser-automation katalon-recorder


【解决方案1】:

所以解决方案是通过 js 和 new Event() 触发事件 为此,您需要触发焦点事件,然后触发点击事件。

let xPath = "(.//*[normalize-space(text()) and normalize-space(.)='Buscar o empezar un chat nuevo'])[1]/following::input[1]";
let result = document.evaluate(xPath, document);
let searchBox = result.iterateNext();

var eventFocus = new Event('focus');
var eventClick = new Event('click');
searchBox.dispatchEvent(eventFocus);
searchBox.dispatchEvent(eventClick);

我还必须将Search or start new chat 更改为西班牙语,我的默认语言Buscar o empezar un chat nuevo。因此,您可以考虑改进代码。 希望这会有所帮助:)

【讨论】:

  • 在你的控制台上运行代码,然后alt+tab到你的窗口
  • 执行上面的脚本后能看到闪烁的光标吗?
  • 是的,如果您愿意,我们可以通过 discord 进行连接。我很乐意为您提供帮助
  • 你得到答案了吗@DevashishJaiswal?如果您能与我们分享,我将不胜感激。我可以专注于搜索框,但 WhatsApp 没有响应通过控制台输入的输入。
  • @AbhinavSuthar 我最终使用了 Selenium,并在此过程中节省了大量时间 :) 如果您正在寻找基于 JavaScript 的解决方案,请查看 puppeteer。
猜你喜欢
  • 2010-10-22
  • 2019-04-11
  • 1970-01-01
  • 2021-06-20
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
相关资源
最近更新 更多