我正在尝试使用VS 2013中的WebBrowser
控件在网页上输入文字。我的应用程序是用C#
编写的。网页的Html不使用标准ID,而是使用名为data-gel-id
的内容。我相信这是建立网页的公司的习惯,但我对JavaScript的熟悉程度不够。这意味着我无法使用GetElementsById()
方法将我的应用指向特定文本框。 Html元素转载如下:
<div class="rcPoint rcPointtext rcPointEditable" data-gel-id="gel_20" style="position: absolute; left: 25.9375%; top: 28.125%; font-size: 12%;">
我正在尝试使用下面的代码片段来通过className获取Html元素。该代码基于MSDN论坛post的摘录。
static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
{
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
{
yield return e;
}
}
但是,当我尝试将此方法的输出分配给HtmlElement
时,如下所示:
HtmlElement txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable");
我收到错误消息,说明您无法将IEnumerable显式转换为HtmlElement。
所以我有几个问题:
IEnumerable
转换为Html元素吗?而如果
又怎样? 非常感谢您的帮助,请告诉我是否还有其他任何内容可以帮助我找到答案。
答案 0 :(得分:0)
如果您知道&#34;自定义ID&#34;,您应该尝试这样的事情
var gelId = "gel_20"; // This is the id you know
var txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable")
.FirstOrDefault(x => x.GetAttribute("data-gel-id") == gelId);
if (txtbox != null) {
// Found textbox do something with it
}