0

所以我正在设置一个文本框的值,然后我将单击一个按钮来提交搜索。文本框中的值显示了我想要的内容,但是当我触发单击按钮时,网站在页面上给我一条错误消息,好像文本框值为空(即使我正在查看它并且它正在显示我想要的)。

现在,如果我手动单击按钮,它仍然认为文本框是空的。但是,如果我手动单击文本框(只需单击,不要更改任何内容),然后手动单击按钮,它就可以工作。

因此,显然在幕后发生了一些事情,需要文本框在页面识别输入的内容之前获得焦点。

    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")。

我不知道当有人实际输入文本框时网页期望被触发的是什么,但它显然阻止了页面“看到”我的代码放置在其中的内容。

有任何想法吗?

4

1 回答 1

0

原来有 3 个文本框(每个名称略有不同)以某种方式相互关联。必须设置所有 3 的值,然后按钮才能正常工作。我以为我已经尝试过了,但也许我之前没有完成所有 3 个操作,或者我的顺序错误。啊。

于 2015-08-24T16:28:46.210 回答