C# webbrowser控件中的鼠标点击模拟

C# webbrowser控件中的鼠标点击模拟,c#,winforms,user-interface,automation,C#,Winforms,User Interface,Automation,我正在构建一个屏幕抓取实用程序来自动填充遗留web表单。在研究了Selenium和其他自动化框架之后,我决定简单地使用C#WebBrower控件,到目前为止,它很容易使用并且工作良好。然而,其中一个webforms使用了java驱动的导航窗格,我无法像使用html元素那样控制它。因此,我的计划是找到各种导航元素的屏幕坐标并模拟鼠标点击 我找到了一些相关的帖子,并被引导尝试类似的东西(下面的代码)。但是它不起作用,我也不知道为什么。我尝试在ClickOn()调用中将句柄传递给WebBrowser控

我正在构建一个屏幕抓取实用程序来自动填充遗留web表单。在研究了Selenium和其他自动化框架之后,我决定简单地使用C#WebBrower控件,到目前为止,它很容易使用并且工作良好。然而,其中一个webforms使用了java驱动的导航窗格,我无法像使用html元素那样控制它。因此,我的计划是找到各种导航元素的屏幕坐标并模拟鼠标点击

我找到了一些相关的帖子,并被引导尝试类似的东西(下面的代码)。但是它不起作用,我也不知道为什么。我尝试在ClickOn()调用中将句柄传递给WebBrowser控件及其父窗体,但两者都不起作用。我使用Spy++查看它,似乎没有触发任何消息。有人知道凶手是什么吗

另外,我应该补充一点,目前还没有涉及java。我只是想点击一个html按钮来验证ClickOn方法

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(onDocLoaded);
    }

    private void onLoad(object sender, EventArgs e)
    {
        browser.Navigate(@"http://www.dummysite.com/");
    }

    void onDocLoaded(object sender, WebBrowserDocumentCompletedEventArgs e )
    {
        ClickOn(browser.Handle, 899, 463);
    }

    [DllImport("user32.dll", EntryPoint = "PostMessage",  CharSet = CharSet.Auto)]
    static extern bool PostMessage1(IntPtr hWnd, uint Msg,
      int wParam, int lParam);

    private void ClickOn(IntPtr hControl, int x, int y)
    {
        uint WM_LBUTTONDOWN = 0x0201;
        uint WM_LBUTTONUP = 0x0202;
        PostMessage1(hControl, WM_LBUTTONDOWN, x, y);
        PostMessage1(hControl, WM_LBUTTONUP, x, y);
    }
}

尝试在window.load事件后从javascript调用ClickOn