首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetElementsByName geckofx

GetElementsByName geckofx
EN

Stack Overflow用户
提问于 2017-04-28 22:48:38
回答 1查看 1.9K关注 0票数 0
代码语言:javascript
复制
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");
    }

把焦点放在这里

代码语言:javascript
复制
var emailField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetElementsByTagName("input").DomObject);
                emailField.Value = emailText;

我得到了很多这样的错误,但当我尝试将GetElementsByTagName更改为GetHtmlElementById时,它工作了。但我需要知道它的名字,因为instagram使用的是name="",而不是id=""

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 20:26:06

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

您可以使用此代码来获取具有名称属性name="nameOfMyElement"的GeckoElements集合。

请注意,这不是标记名称。

代码语言:javascript
复制
var allElementsWithSpecifiedName  = this.Browser.Document.GetElementsByName("nameOfMyElement");

现在,由于名称不是唯一的,您将获得一个集合。

然后,您可以执行一个Linq查询来获取FirstOrDefault();,或者按索引访问。

代码语言:javascript
复制
GeckoInputElement inputEle = allElementsWithSpecifiedName .FirstOrDefault() as GeckoInputElement;

如果您获取的内容太多,那么我建议缩小搜索范围,首先找到输入的父元素,然后再按名称访问。

例如:

代码语言:javascript
复制
var loginForm = this.Browser.Document.GetElementById("loginForm") as GeckoHtmlElement;
            var elements = loginForm.GetElementsByTagName("input");
            GeckoInputElement inputEle = elements.FirstOrDefault(x=>x.LocalName == "nameOfMyElement") as GeckoInputElement;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43683027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档