我使用DocumentComplete事件自动完成表单。除了复选框,一切都很好。 html代码如下:
<span class="myClass" style="padding-left: 12px; vertical-align: bottom; cursor: pointer;">
<input id="ich_liebe_dich" type="checkbox" name="ich$liebe$dich">
<label for="ich_liebe_dich"> MyLabel</label>
</span>
我尝试使用:
webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click");
和
webbrowser.Document.GetElementById("ich$liebe$dich").InvokeMember("click");
还有:
foreach (HtmlElement current in webbrowser.Document.GetElementsByTagName(tag))
{
if (current.GetAttribute(attr).Equals(attName))
current.InvokeMember(invoke);
}
其中attr =“id”,tag =“input”,invoke =“click”和attName =“ich_liebe_dich”或“ich $ liebe $ dich”。
我得到的最好的是一个短暂的 - 只需一秒钟 - 复选框。为什么会这样?任何解决方案?
答案 0 :(得分:1)
leppie的回答让我好奇,因为我从来没有读过有关InvokeMember(“check”)的任何内容,我用Google搜索了它!我得到的第一个答案是http://social.msdn.microsoft.com/forums/en-US/winforms/thread/750b11dc-08f8-4cb4-bcaf-80c91f0fd425/
我读了这篇文章并找到了解决方案...... 如果我在DocumentCompleted事件上添加这一行,那么一切正常!
if (webbrowser.ReadyState==WebBrowserReadyState.Complete)
似乎该页面包含框架,并且在加载整个页面之前会触发DocumentCompleted事件。
编辑:我忘了提到我使用的代码(和工作代码)如下:
webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click");
答案 1 :(得分:1)
我已经回答了similar question
webBrowser.Navigate( “http://www.google.com”);
如果你有id使用它:
webBrowser1.Document.GetElementById("id").InvokeMember("click");
如果您有使用此标记名
webBrowser.Navigate("http://www.google.com");
在Web浏览器DocumentCompleted事件
中HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0];
textElement.SetAttribute("value", "your text to search");
HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0];
btnElement.InvokeMember("click");
如果你有名字类,请使用:
HtmlElementCollection classButton = webBrowser1.Document.All;
foreach (HtmlElement element in classButton)
{
if (element.GetAttribute("className") == "button")
{
element.InvokeMember("click");
}
}
在文本框中添加文字google.com使用此:
webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";