GeckoWebBrowser가있는 Windows 응용 프로그램에서 작업 중이며 코드를 통해 보안 문자의 확인란을 선택하려고합니다. Programmaticaly 이미 html 요소를 가져오고 설정할 수 있지만이 확인란에는 연결할 수 없습니다. 페이지의 어느 위치에서나 찾을 수 없습니다. captcha를 분열 시키거나 해결하려고 시도하지 않고 체크 박스 요소를 확인한 후 확인하십시오. 그런 간단한.GeckoWebBrowser Captcha 체크 박스를 표시하는 방법 (C# Windows 양식)?
내가 지금 알고있는 무엇 :
파이어 폭스 관리자에서 나는 어떤 확실한 정보를 볼 수 있습니다 보안 문자는, 제목 = "위젯 reCAPTCHA를"있는 iframe에 폭 = 304 높이 = 78 .
체크 박스 요소 (iframe을 내부에)이 점에 : 지금
, 이것이 내가 가진 다른 방법으로 ID, 범위, 사업부 및 클래스를 찾고, 체크 박스를 얻으려고하는 방법이다 주요 문서
//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"... 엽기적인 기괴함.
이
이누구는 내가 부족 무엇이나 내가 잘못 뭘하는지? 일부 sugestion있다 :-(... 나를 미치게됩니다 도 iframe을 모든 HTML 요소를 얻을 수있는 방법이 있습니다 또는 전체 요소 트리?
내가 할 노력하고있어 무엇을 할 수 있습니까?
감사합니다 사전에!
대신 GeckoDivElement합니다. 감사! –