2012-12-25 6 views
0

être bien compris - ce problème a l'accessoire suivant:défiler Programatically la fenêtre du navigateur .NET

  1. J'ai une page avec chargeur paresseux - qui est activé lors du défilement
  2. chargeur Lazy est traité par JavaScript
  3. À la fin de la page qui va charger 100% - vous verrez un bouton qui doit être activé.

Voici un exemple de ce que j'ai essayé d'écrire:

_WebContent.wbThread1.Focus(); 
    int length = 100; 

    new Thread(() => 
     { 
      for (int i = 0; i <= length; i++) 
      { 
       System.Windows.Forms.SendKeys.Send("{PGDN}"); 

       Thread.Sleep(new TimeSpan(0, 0, 3)); 
       st.Start(); 
      } 
     }).Start(); 

Tout va bien, mais il est un problème pour traiter les cas SendKey, petit besoin de se concentrer région pour l'événement, et au cas où l'accent est perdu ne dépensera rien.


j'ai commencé à rechercher des informations sur MSDN et trouvé quelque chose de très intéressant pour le traitement du défilement:

_WebContent.wbThread1.Document.Body.ScrollIntoView (true)// allows scrolling to the top 
_WebContent.wbThread1.Document.Body.ScrollIntoView (false)// allows scrolling to the bottom 
_WebContent.wbThread1.Document.Body.ScrollLeft = 100,// sets the offset to the left 
_WebContent.wbThread1.Document.Body.ScrollTop = 100,// sets the upward shift 
var rect = _WebContent.wbThread1.Document.Body.ScrollRectangle;// returns the current position 

et cette combinaison de fonctionnalités n'a pas aidé. Théoriquement, le code fonctionne, mais en pratique, je n'ai pas eu de succès avec cet exemple.

événement après que je processus de défilement, j'exécute quelque chose comme ça:

HtmlElementCollection _HtmlElementCollect = _WebContent.wbThread1.Document.GetElementsByTagName("A"); 
foreach (HtmlElement link in _HtmlElementCollect) 
      { 
       if (link.InnerText.Equals("Load More...")) 
        link.InvokeMember("Click"); 
      } 

Quelles suggestions avez-vous? Comment puis-je faire ce défilement?

Répondre

0

vous pouvez faire défiler vers le bas en utilisant

webCtrl.Document.Window.ScrollTo(0, Int32.MaxValue); 
+0

J'essaie cet exemple, mais ne fonctionne pas - peut-être vous avez un exemple complet? – Johnny

+0

@Johnny Postez votre exemple où vous essayez de l'appeler et cela n'a pas fonctionné – VladL

Questions connexes