【发布时间】:2017-04-28 14:48:37
【问题描述】:
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");
}
关注这个
var emailField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetElementsByTagName("input").DomObject);
emailField.Value = emailText;
我对此有很多错误,但是当我尝试将GetElementsByTagName 更改为GetHtmlElementById 时,它的工作原理。但我需要按名称获取元素,因为 instagram 使用 name="" 而不是 id=""
【问题讨论】:
-
你试过
GetElementsByName吗? -
@OfirWinegarten 这是错误消息:错误 1“Gecko.GeckoElementCollection”不包含“DomObject”的定义,并且没有扩展方法“DomObject”接受“Gecko.GeckoElementCollection”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?) D:\Underground\C#\IG Account Creator\IG Account Creator\Form1.cs 27 119 IG Account Creator
-
请注意
GetElementsByTagName返回一个集合,而不仅仅是一个对象(Elements是复数),因此您可能需要在DomObject扩展方法之前选择您想要的Element将可用。 -
我认为@Ofir 是在正确的轨道上,
GetElementsByName("fred")返回一个 HTML 元素的集合,其 name attribute 等于“fred” 'GetElementsByTagName("fred")` 返回 type "fred" 的 HTML 元素的集合。如果您有超过 1 个具有相同 name 值的元素,则需要指定它是哪一个;或者,相应地重命名。 -
@AdamV 如果我只想通过名称而不是标记名来获取呢?
标签: c# html getelementbyid gecko geckofx