[英]Simulating mouse click in webbrowser control
我正在构建一个屏幕抓取工具来自动化传统Web表单的数量。 在研究了Selenium和其他自动化框架之后,我决定简单地使用C#WebBrower控件,到目前为止它易于使用且运行良好。 然而,其中一个网络表单使用了一个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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.