2014-03-03 27 views
1

在常规WebBrowser您可以点击一些与此代码:如何使用WebKitBrowser调用会员?

webBrowser1.Document.GetElementById("welcome_box_sign_in_button").InvokeMember("Click"); 

但在WebKitBrowser,没有.InvokeMember。我如何去做这件事?

这是按钮我试图单击该代码:

<input tabindex="5" class="submit spriteall spritesite" id="welcome_box_sign_in_button" onclick="try{}catch(e){};if(!this.elem_welcome_box_sign_in_button){this.elem_welcome_box_sign_in_button=$('welcome_box_sign_in_button');this.spin_welcome_box_sign_in_button=$('welcome_box_sign_in_button_spinner');this.restore=function(t){return function(){t.elem_welcome_box_sign_in_button.show();t.spin_welcome_box_sign_in_button.hide();Event.stopObserving(window, 'unload', t.restore);}}(this);}this.elem_welcome_box_sign_in_button.hide();this.spin_welcome_box_sign_in_button.show();Event.observe(window, 'unload', this.restore);" type="submit" value="Sign In"> 

回答

0

你可以一个脚本始终追加到DOM,并与InvokeScript方法调用它。您可以传递DOM元素的id以及要触发的动作的名称,并用Javascript完成剩下的工作。

browser.Document.InvokeScriptMethod("functionName", new object[]{"parameter1", "parameter2"}); 

http://webkitdotnet.sourceforge.net/docs/html/M_WebKit_DOM_Document_InvokeScriptMethod.htm

+0

我真的不知道如何使用你的代码。我编辑了我的文章,所以你可以编辑我的文章的代码?谢谢。 – Dozer789

1

我在How to click on a link using Webkit Browser?回答类似的问题。我不使用Windows,我的经验都在Webkit GTK上。以下评论是基于这一经验。

此外,这只是gretro的答案的详细说明。

如果您的webkit实现不支持DOM API,那么您可以使用JavaScript执行来完成大量工作。

使用JavaScript执行,那么你可以做大部分,如果不是所有的DOM操作。 API函数通常与javascript函数相同,大多数情况下,尽管始发方法在内部调用完全相同的函数。您的应用程序和javascript之间的通信可能没有什么挑战性,但是如果您可以阅读警报消息,那也可以解决。它看起来像这个库支持警报处理机制。我在https://github.com/nhrdl/notesMD上编写的工具将显示实现此通信的一些示例,尽管它使用GTK版本并使用python编写。

Gretro的答案可以做到如下。请注意语法错误,因为我没有测试过,因为缺乏对.NET世界的访问。以我的经验,结语“;”在执行时需要执行某些操作,有些抱怨,有些则不在意。所以这是另一件需要注意的事情。

browser.Document.InvokeScriptMethod("document.getElementById('<id>').click()", new object[]{});