私はGeckoWebBrowserを使用してWindowsアプリケーションを開発中です。コードでCaptchaのチェックボックスをチェックしようとしています。私はすでにhtml要素を取得して設定することができますが、このチェックボックスは表示できません。私はページのどの場所でもそれを見つけることができません。 私はキャプチャを解読または解決しようとしていません。単にチェックボックスの要素をチェックし、それがチェックされているかどうかを確認してください。そう簡単。GeckoWebBrowser Captchaチェックボックス(C#Windowsフォーム)をマークする方法は?
私は、現時点では知っている:
FireFoxのインスペクタで、私は いくつかの明白な情報を見ることができます:キャプチャは、タイトル=「ウィジェットのreCAPTCHA」とiframe内幅= 304、高さ= 78 。
チェックボックス要素は、(IFRAME内)、この時点である:今
、これは私が持つさまざまな方法でID、スパン、DIVおよびクラスを探して、チェックボックスを取得しようとしている方法ですメイン文書
//looking all elements into main Document (around 1300 elements)
GeckoElementCollection collection = geckoWebBrowser1.Document.GetElementsByTagName("*");
foreach (GeckoHtmlElement elem in collection)
{
string id = elem.Id;
if (id == "recaptcha-anchor")
{
string myId = "this is my ID"; //never find this ID!
}
//just for debug
string LocalName = elem.LocalName;
string OuterHtml = elem.OuterHtml;
string TagName = elem.TagName;
string TextContent = elem.TextContent;
string role = elem.GetAttribute("role");
string value = elem.GetAttribute("value");
}
には成功...
まず、だから、メイン文書に私はIDによって何かを見つけることはできません。
次に、IFRAMEに探して:
//get the iframe works well
foreach (GeckoIFrameElement iframe in geckoWebBrowser1.Document.GetElementsByTagName("iframe"))
{
//get main info about the iframe - ok
string title = iframe.GetAttribute("title");
if (title != null && title.ToLower().Contains("captcha")) //got "recaptcha widget"
{
int x = iframe.OffsetLeft;
int y = iframe.OffsetTop;
int width = Convert.ToInt32(iframe.Width);
int height = Convert.ToInt32(iframe.Height);
}
//inside the iframe, get all elements --> but always return null
Gecko.Collections.IDomHtmlCollection<GeckoElement> collection2 = iframe.GetElementsByTagName("*");
foreach (GeckoHtmlElement elem in collection2)
{
string id = elem.Id;
string LocalName = elem.LocalName;
string OuterHtml = elem.OuterHtml;
string TagName = elem.TagName;
string TextContent = elem.TextContent;
string role = elem.GetAttribute("role");
string value = elem.GetAttribute("value");
}
//foreach (GeckoHtmlElement elem in iframe.GetElementsByTagName("*")) //get no elements
//foreach (GeckoHtmlElement elem in iframe.GetElementsByTagName("input")) //get no elements
//foreach (GeckoHtmlElement elem in iframe.GetElementsByTagName("div")) //get no elements
foreach (GeckoHtmlElement elem in iframe.GetElementsByTagName("span")) //get no elements
{
string id = elem.Id;
string LocalName = elem.LocalName;
string OuterHtml = elem.OuterHtml;
string TagName = elem.TagName;
string TextContent = elem.TextContent;
string role = elem.GetAttribute("role");
}
}
ので、試行錯誤の多くの後、私はチェックボックス要素を取得することはできませんが、私は位置や大きさのような、キャプチャボックスに関するいくつかの情報を得ることができます私が期待していたように、タイトルは100%ではありませんが、Firefoxではtitle = "widget recaptcha"とGeckoWebbrowser title = "recaptcha widget" ...リトル・ビザール。
これは狂気私を運転している... :-(
誰もが私が欠けている何か私が間違ってやっているいくつかの暗示があります? でも、アイフレーム内のすべてのHTML要素を取得する方法があります。 、または完全な要素ツリー?
は私がやろうとしているものを行うことは可能ですか?事前に
ありがとう!
代わりGeckoDivElement。ありがとう! –