代码之家  ›  专栏  ›  技术社区  ›  kpg

如何在javascript中模拟真正的点击输入元素

  •  1
  • kpg  · 技术社区  · 7 年前

    在.NET项目中使用CefSharp浏览器来执行网站自动化项目,但我怀疑这是一个一般的javascript问题。

    我的问题是我不能让输入字段的模糊事件激发当我 以编程方式“单击”下一个字段。

    el.click(); //click it   
    el.focus(); //just trying to force focus
    el.value = 'sometext'; //change it
    ...and loop to next field
    

    我的目标是在第二次传球时,第一场的模糊事件会触发,但不会。

    var ev=document.createEvent('HTMLEvents');
    ev.initEvent('blur', false, true);
    el.dispatchEvent(ev);
    

    问题是,我碰巧对这个网站有特殊的了解,知道模糊需要发生,但我想要一个通用的解决方案,可以触发所有正常的事件-聚焦,模糊,改变,无论什么,我想el.click();当然可以,但显然不行。

    编辑:

    这看起来很有希望,但也没有引发事件。

    browser.GetBrowser().GetHost().SendMouseClickEvent(x, y,   MouseButtonType.Left, false, 1, CefEventFlags.None);
    System.Threading.Thread.Sleep(100);
    browser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
    

    我看了看《木偶师》,似乎.NET包装需要>framework4.0,我的要求是4.0,selenium似乎是无头的,我需要一个可见的浏览器。更多的研究表明,但我一般很高兴与头孢夏普和它可以做什么。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Takashi Harano    7 年前

    这里有一个用于调试和自动测试的库。 https://debugjs.net/

    下面是一个示例脚本。 右下角的控制台窗口是库的窗口。 单击工具->BAT并输入以下脚本,然后单击[运行]。

    point move #text1
    wait 300
    point click
    wait 250
    point text "abcdefg"
    wait 500
    point move #text2
    wait 300
    point click
    wait 250
    point text "1234567890"
    wait 500
    point init
    

        2
  •  1
  •   kpg    7 年前

    我非常喜欢《高石密码》;在将debug.js添加到站点时,为响应“point click”命令而激发的mousedown和mouseup事件起作用,但在移植到我的项目时仍然不起作用。