GeckoFX:将GeckoNode转换为GeckoHTMLElement

本文关键字:GeckoHTMLElement 转换 GeckoNode GeckoFX | 更新日期: 2023-09-27 17:49:36

我只需要点击一个由唯一类标识的元素的第一个子元素。

我的代码到目前为止是:

geckoWebBrowser.Document.GetElementsByClassName("button")[0].FirstChild.Click();

问题是GeckoFX 16的geckoWebBrowser.Document.GetElementsByClassName返回一个类型为GeckoNode的数组,它没有点击方法,所以这个代码不能工作。在另一边,方法
geckoWebBrowser.Document.GetElementsByName
返回一个类型为GeckoHTMLElement的数组,它有一个点击方法。

基于这一事实,我尝试用as操作符进行强制转换,但这总是抛出一个异常,消息是它不能强制转换。
我已经在GeckoFX的类中搜索了很多(遗憾的是没有任何文档),但我没有找到任何

任何帮助都将不胜感激。

GeckoFX:将GeckoNode转换为GeckoHTMLElement

在强制转换之前,您需要确保该节点实际上是一个元素,而不是,例如,一个文本节点。

GeckoNode node = geckoWebBrowser.Document.GetElementsByClassName("button")[0].FirstChild;
if (NodeType.Element == node.NodeType)
{
  GeckoElement element = (GeckoElement)node;
  element.Click();
}
else
{
 // Even though GetElementByClassName return type could contain non elements, I don't think
 // it ever would in reality.
 Console.WriteLine("First node is a {0} not an element.", node.NodeType);
}

你知道html是否已经加载了吗?

尝试在DocumentCompleted事件发生后运行此代码。

geckoWebBrowser1.DocumentCompleted += geckoWebBrowser1_DocumentCompleted;
private void geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e)
{
   // Here you can add the coding to perform after document loaded
   GeckoInputElement txtbox = (GeckoInputElement)geckoWebBrowser1.Document.GetElementById("txtBox1");
   txtbox.SetAttribute("value","OK");
}

GeckoElement不支持Click,但支持GeckoHtmlElement。

geckoWebBrowser.Document.GetElementsBy……不返回GeckoHtmlElement,只返回GeckoElement;如此悲伤!

相关文章:
  • 没有找到相关文章