2013-12-17 64 views
3

我正在構建一個屏幕抓取工具來自動化遺留網頁表單的人口。在研究了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); 
    } 
} 

回答

0

嘗試window.load事件後調用ClickOn從JavaScript