Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GeckoFX:将GeckoNode投射到Geckohtmlement_C#_Dom_Casting_Geckofx - Fatal编程技术网

C# GeckoFX:将GeckoNode投射到Geckohtmlement

C# GeckoFX:将GeckoNode投射到Geckohtmlement,c#,dom,casting,geckofx,C#,Dom,Casting,Geckofx,我只需要单击由唯一类标识的元素的第一个子元素 到目前为止,我的代码是: geckoWebBrowser.Document.GetElementsByClassName("button")[0].FirstChild.Click(); 问题是geckofx16的geckoWebBrowser.Document.GetElementsByClassName返回一个类型为GeckoNode的数组,该数组没有Click方法,因此此代码不起作用。另一方面,方法 geckoWebBrowser.Docum

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

到目前为止,我的代码是:

geckoWebBrowser.Document.GetElementsByClassName("button")[0].FirstChild.Click();
问题是geckofx16的
geckoWebBrowser.Document.GetElementsByClassName
返回一个类型为
GeckoNode
的数组,该数组没有Click方法,因此此代码不起作用。另一方面,方法
geckoWebBrowser.Document.GetElementsByName

返回类型为
geckohtmlement
的数组,该数组确实具有单击方法。

基于这一事实,我尝试使用
作为
运算符强制转换,但这始终会引发异常,并显示无法强制转换的消息
我已经在GeckoFX的类中搜索了很多(遗憾的是没有任何文档),但是我没有找到任何东西


任何帮助都将不胜感激

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

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);
}

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

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);
}

GeckoElement不支持单击,但支持GeckoHtmlElement


geckoWebBrowser.Document.GetElementsBy。。。不返回壁虎元素,仅返回壁虎元素;真伤心

GeckoElement不支持单击,但支持GeckoHtmlElement


geckoWebBrowser.Document.GetElementsBy。。。不返回壁虎元素,仅返回壁虎元素;真伤心

你知道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");
}

你知道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");
}

您可能需要考虑添加一些文本来描述您的解决方案。例如,检查节点类型以查看节点类型是否是您的代码,总是说它不是GECKOLL元素,但我已经通过执行JavaScript,通过QueRealSturTrAOL选择元素,给它一个唯一的类名,然后点击GECKOFXU可能会考虑添加一些文本来描述您的解决方案。e、 只需检查节点类型,看看它是否是节点类型。您的代码总是说它不是geckoelement,但我已经执行了javascript,通过querySelectorAll选择元素,给它一个唯一的类名,然后单击geckofxGetHtmlElementById存在,GetElementById GetHtmlementById存在,GetElementById存在