2015-01-05 5 views
0

, что я пытаюсь сделать, это нажать на iframe программно, который выглядит следующим образомЩелкнув CAPTCHA на IFrame программно не работает

enter image description here

и html код:

<div class="g-recaptcha" data-sitekey="6Lf3v8wSAAAAABVuu8qFKDtsvc0ILPoyUBVRToA9" style="width: 40%; margin: 0 auto;"> 

    <div> 
     <div style="width: 304px; height: 78px;"> 
      <iframe id="I0_1420487033543" width="304" height="78" frameborder="0" hspace="0" marginheight="0" marginwidth="0" scrolling="no" style="" tabindex="0" vspace="0" name="I0_1420487033543" src="https://www.google.com/recaptcha/api2/anchor?k=6Lf3v8wSAAAAA…=http%3A%2F%2F&pfname=&rpctoken=24572959"></iframe> 
     </div> 
     <textarea id="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 80px; border: 1px solid #c1c1c1; margin: 0px; padding: 0px; resize: none; display: none; " name="g-recaptcha-response" dir="ltr"></textarea> 
    </div> 

</div> 

и что я пытаюсь это:

private void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (this.Web.ReadyState != WebBrowserReadyState.Complete) 
       return; 


      this.Web = sender as WebBrowser; 


      var theElementCollection = Web.Document.Body.GetElementsByTagName("iframe"); 

      for (int i = 0; i < theElementCollection.Count; i++) 
      { 
       HtmlElement curElement = theElementCollection[i]; 

       if (curElement.Id != null && curElement.Id.StartsWith("I0_")) 
       { 
        curElement.InvokeMember("click"); 

       } 
      } 
     } 

, но это не работает, как я могу это решить?

+1

Вероятно, встроенный в безопасности браузера блокирует щелчок (домены различны). – MikeTheLiar

+0

@mikeTheLiar: да, документ верхнего уровня не должен быть в состоянии автоматизировать содержимое iframe. Но, тем не менее, если бы это было возможно, то этот captcha был бы бесполезен, весь смысл captchas состоит в том, что вы не можете автоматизировать их. –

ответ

0

я смог добиться чего-то подобного тому, что вы ищете, где с помощью Selenium и следующего кода:

private static void verifySites(string username, string password) 
{ 
    using (var ffox = new FirefoxDriver() 
    { 
     /// code to login once logged in 
     var recaptcha = ffox.FindElementByTagName("iframe"); 
     recaptcha.Click(); 
    } 
} 
Смежные вопросы