I'm trying to use the WebBrowser
control in VS 2013 to enter text on a webpage. My app is written in C#
. The Html for the webpage doesn't use standard ids, but instead it uses something called a data-gel-id
. I believe this is custom to the company that built the webpage, but I'm not familiar enough with JavaScript to know for sure. This means I can't use the GetElementsById()
method to point my app at the specific text box. The Html element is reproduced below:
<div class="rcPoint rcPointtext rcPointEditable" data-gel-id="gel_20" style="position: absolute; left: 25.9375%; top: 28.125%; font-size: 12%;">
I am trying to use the code snippet below to get the Html element by className. The code is based on a snippet from an MSDN forum post .
static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
{
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
{
yield return e;
}
}
However, when I try to assign the output of this method to an HtmlElement
like so:
HtmlElement txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable");
I get an error saying that you can't explicitly convert an IEnumerable to an HtmlElement.
So I have a few questions:
IEnumerable
to an Html element? And if so, how? Thank you very much for your help and let me know if there's anything else I can post to help with the answer.
If you know the "custom id", you should probably try something like this
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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.