所以我正在设置一个文本框的值,然后我将单击一个按钮来提交搜索。文本框中的值显示了我想要的内容,但是当我触发单击按钮时,网站在页面上给我一条错误消息,好像文本框值为空(即使我正在查看它并且它正在显示我想要的)。
现在,如果我手动单击按钮,它仍然认为文本框是空的。但是,如果我手动单击文本框(只需单击,不要更改任何内容),然后手动单击按钮,它就可以工作。
因此,显然在幕后发生了一些事情,需要文本框在页面识别输入的内容之前获得焦点。
private void SetText(string elementID, string text)
{
foreach (HtmlWindow hw in this.webBrowser1.Document.Window.Frames)
{
HtmlElement element = hw.Document.GetElementById(elementID);
if (element != null)
{
element.SetAttribute("value", text);
// here's where I'm trying things
break;
}
}
}
这是我尝试过的(不确定所有这些都是有效的,但我还是尝试了它们:
我尝试将焦点设置在文本框上,然后通过在按钮上设置它来移除它—— element.Focus() 然后 button.Focus() 在单击按钮之前。
我试过调用更改的事件——element.InvokeMember("change")、element.InvokeMember("changed")、element.InvokeMember("onchange")、element.InvokeMember("textchanged")。
我试过调用焦点事件——element.InvokeMember("focus")。
我试过调用 lostfocus 事件——element.InvokeMember("lostfocus")。
我不知道当有人实际输入文本框时网页期望被触发的是什么,但它显然阻止了页面“看到”我的代码放置在其中的内容。
有任何想法吗?