Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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# GetElementsByName geckofx_C#_Html_Getelementbyid_Gecko_Geckofx - Fatal编程技术网

C# GetElementsByName geckofx

C# GetElementsByName geckofx,c#,html,getelementbyid,gecko,geckofx,C#,Html,Getelementbyid,Gecko,Geckofx,关注这一点 private void Form1_Load(object sender, EventArgs e) { geckoWebBrowser1.DocumentCompleted += ((se, ea) => { TextBox email = (TextBox)sender; string emailText = email.Text; var emailFiel

关注这一点

private void Form1_Load(object sender, EventArgs e)
    {
        geckoWebBrowser1.DocumentCompleted += ((se, ea) =>
        {
            TextBox email = (TextBox)sender;
            string emailText = email.Text;

            var emailField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetElementsByTagName("input").DomObject);
            emailField.Value = emailText;
        });
        geckoWebBrowser1.Navigate("instagram.com");
    }

我在这方面遇到了很多错误,但当我尝试将
GetElementsByTagName
更改为
GetHtmlElementById
时,它是有效的。但我需要按名称获取elemnt,因为instagram使用的是
name=“
而不是
id=“

,首先,您不必调用
new Geckoinputement
,您可以进行强制转换(见下文)

您可以使用此代码获取具有name属性的geckoElement集合
name=“nameOfMyElement”

请注意,这不是标记名

var emailField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetElementsByTagName("input").DomObject);
                emailField.Value = emailText;
现在,由于名称不是唯一的,您将获得一个集合

然后可以进行Linq查询以获取
FirstOrDefault(),或按索引访问

var allElementsWithSpecifiedName  = this.Browser.Document.GetElementsByName("nameOfMyElement");
如果得到的太多,我建议缩小搜索范围,首先查找输入的父元素,然后按名称访问

例如:

GeckoInputElement inputEle = allElementsWithSpecifiedName .FirstOrDefault() as GeckoInputElement;

您是否尝试过
GetElementsByName
?@OfirWinegarten这是错误消息:错误1“Gecko.GeckoElementCollection”不包含“DomObject”的定义,并且找不到接受“Gecko.GeckoElementCollection”类型的第一个参数的扩展方法“DomObject”(是否缺少using指令或程序集引用?),因此在
DomObject
扩展方法可用之前,您可能需要选择所需的
元素
。我认为@Ofir的做法是正确的,
GetElementsByName(“fred”)
返回一组HTML元素,其name属性等于“fred”'GetElementsByTagName(“fred”)`返回类型为“fred”的HTML元素集合。如果有多个元素具有相同的名称值,则需要指定该元素是哪一个;或者,相应地重命名。@AdamV如果我只想按名称而不是标记名获取,如何?
var loginForm = this.Browser.Document.GetElementById("loginForm") as GeckoHtmlElement;
            var elements = loginForm.GetElementsByTagName("input");
            GeckoInputElement inputEle = elements.FirstOrDefault(x=>x.LocalName == "nameOfMyElement") as GeckoInputElement;