首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Webbrowser文档,invokemember(" click "),是否可以等到单击操作解决?

C# Webbrowser文档,invokemember(" click "),是否可以等到单击操作解决?
EN

Stack Overflow用户
提问于 2011-06-08 10:13:04
回答 1查看 1.9K关注 0票数 1

我正在做的是一个Invokemember("Click"),问题是我想要能够抓取得到的innerhtml。问题是我不确定如何/是否可以等到invokemember("click")的结果操作被解决。这意味着,在javascript中,当您执行此操作时,它将把您带到下一个列出的20项。但是,我不确定如何判断javascript何时会完全加载。下面是我正在使用的。

代码语言:javascript
运行
复制
private void button1_Click(object sender, EventArgs e)
{
    HtmlElement button = webBrowser1.Document.GetElementById("ctl08_ctl00_InventoryListDisplayFieldRepeater2_ctl00_BlockViewPaging_Next");
    button.InvokeMember("click");
    HtmlElement document = webBrowser1.Document.GetElementsByTagName("html")[0];


}
EN

回答 1

Stack Overflow用户

发布于 2011-06-08 10:30:05

一种可能的解决方案是在javascript中修改您的"click“事件处理程序,以便它在退出方法之前(在所有工作完成之后)更改某些隐藏输入字段的值。您可以从C#代码附加到更改字段的事件,并在其触发时执行操作。

代码语言:javascript
运行
复制
// Your init method - you can call it after `InitializeComponent`
// in the constructor of your form
Init() {
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    webBrowser1.Document.GetElementsByTagName("statusField")[0].AttachEventHandler("onchange", WorkDone);
}

void WorkDone(object sender, EventArgs e) {
    HtmlElement document = webBrowser1.Document.GetElementsByTagName("html")[0];
}

这是原始的解决方案,我还没有检查"onchange"是否是正确的DOM事件。

此外,在文档完全加载之前不能附加到DOM事件,这就是为什么我将附加逻辑放在DocumentCompleted事件的处理程序中的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6273514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档