Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在WhatsApp web中以编程方式单击元素_Javascript_Automation_Webdriver_Browser Automation_Katalon Recorder - Fatal编程技术网

Javascript 无法在WhatsApp web中以编程方式单击元素

Javascript 无法在WhatsApp web中以编程方式单击元素,javascript,automation,webdriver,browser-automation,katalon-recorder,Javascript,Automation,Webdriver,Browser Automation,Katalon Recorder,为什么不能使用JavaScript单击WhatsApp web()上的任何元素。单击()方法?我正在采取的步骤如下所述: 假设二维码验证已完成,请访问 找到显示search或start new chat(搜索或开始新聊天)的搜索栏,这是一个输入元素,并触发。在其上单击() 我能够找到搜索输入字段,因为它有一个唯一的标题值search或start new chat,但当我尝试在Chrome的DevTools控制台中单击它时,什么也没有发生 首先我想我可能是点击了错误的元素。当然,我在Chrome上

为什么不能使用JavaScript
单击WhatsApp web()上的任何元素。单击()
方法?我正在采取的步骤如下所述:

  • 假设二维码验证已完成,请访问
  • 找到显示search或start new chat(搜索或开始新聊天)的搜索栏,这是一个输入元素,并触发
    。在其上单击()
  • 我能够找到搜索输入字段,因为它有一个唯一的标题值search或start new chat,但当我尝试在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有什么不同之处——允许它点击所需的元素。我可以在无头浏览器中执行此操作吗?

    因此解决方案是通过js和
    新事件()触发事件。
    要使其工作,您需要先触发焦点事件,然后触发单击事件

    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);
    
    此外,我还必须将
    搜索或开始新的聊天
    更改为西班牙语,这是我的默认语言
    Buscar o empezar un chat nuevo
    。因此,您可以考虑改进代码。
    希望这有帮助:)

    你能添加你试图使用的代码吗?@GerardoBLANCO问题用代码更新。看起来
    searchBox
    是空的不是在我的情况下:你期望发生什么?在你的控制台上运行代码,然后
    alt+tab
    到你的窗口执行上面的脚本后你能看到闪烁的光标吗?是的,如果您愿意,我们可以通过discord进行连接。我非常乐意帮助你你得到答案了吗@devahishjaiswal?如果您能与我们分享,我将不胜感激。我可以专注于搜索框,但WhatsApp没有响应通过控制台键入的输入。@AbhinavSuthar我最终使用了Selenium,并在过程中节省了很多时间:)如果您正在寻找基于JavaScript的解决方案,请查看Puppeter。