C#学习教程:如何使用Webkit Browser单击链接?分享


如何使用Webkit Browser单击链接?

我想在导航到网站后点击链接

webKitBrowser1.Navigate("http://www.somesite.com"); 

假设链接的id是lnkId ,如何点击这个网站上的链接?

  Go to Google  

在Visual Studio附带的默认浏览器控件中,我可以使用以下代码执行此操作:

  foreach (HtmlElement el in webBrowser1.Document.GetElementTagName("a")) { if (el.GetAttribute("id") == "lnkId") { el.InvokeMember("click"); } } 

当我使用WebkitDotNet控件时,上面代码的等价物是什么?

由于WebKit不提供Click()事件( 有关详细信息 , 请参见此处 ),您无法以上述方式执行此操作。 但是一个小技巧可能与原始的winforms方式相同,如下所示:

 foreach (Node el in webKitBrowser1.Document.GetElementsByTagName("a")) { if (((Element) el).GetAttribute("id") == "lnkId") { string urlString = ((Element) el).Attributes["href"].NodeValue; webKitBrowser1.Navigate(urlString); } } 

这里我要做的是将WebKit.DOM.Node对象转换为其子类WebKit.DOM.Element以获取其Attributes 。 然后将href提供给NamedNodeMap ,即Attributes作为NodeName ,您可以轻松提取NodeValue ,在这种情况下,它是target url 。 然后,您可以简单地调用WebKitBrowser实例上的Navigate(urlString)方法来复制click事件。

我不使用Windows,我的所有经验都在Webkit GTK上。 以下评论基于该经验。

我不确定您使用的是哪个webkit .NET版本。 看起来有多个实现。 假设您使用的是Wasif提到的那个,您可以按照示例https://code.google.com/p/open-webkit-sharp/source/browse/JavaScriptExample/Form1.cs中的说明评估javascript。

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

顺便说一句,如果你知道元素的id,那么Doc​​ument.GetElementById将为你保存循环。

上述就是C#学习教程:如何使用Webkit Browser单击链接?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 webKitBrowser1.StringByEvaluatingJavaScriptFromString("var inpt = document.createElement("input"); inpt.setAttribute("type", "submit"); inpt.setAttribute("id", "nut"); inpt.setAttribute("type", "submit"); inpt.setAttribute("name", "tmp"); inpt.setAttribute("value", "tmp"); var element = document.getElementById("lnk"); element.appendChild(inpt);"); webKitBrowser1.StringByEvaluatingJavaScriptFromString("document.getElementById('nut').click();"); 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1032010.html

(0)
上一篇 2022年1月14日 上午8:35
下一篇 2022年1月14日 上午8:39

精彩推荐

发表评论

您的电子邮箱地址不会被公开。