2013-07-06 1 views
0

J'ai un code simple qui me aider à ramper à la page 2 de la page Google résultat:erreur Lorsque vous faites une boucle à explorer Google page suivante Watin

var ie= new IE(); 
ie.Link(Find.ByText("2")).Click(); 

Tout ce que je veux grouille plus page suivante avec le inputed nombre de pages, de sorte que je fais une boucle comme ceci:

   string[] page = null; 
       for (int i = 0; i < NumOfPage; i++) 
       { 
       Array.Resize<string> (ref page, i+1); 
       page[i] = "\"" + i.ToString() + "\""; 
       } 
       int count=2; 
       while (count<NumOfPage) 
       { 
        ie.Link(Find.ByText(page[count])).Click();                     
        count++;  
       } 

Mais le résultat est-il une pause à la première page, pas ramper à la page suivante. Il semble que la boucle ne fonctionne pas. Où est le problème???

+0

Nope, vous avez toujours pas vraiment fourni suffisamment d'informations. Que se passe-t-il lorsque vous déboguez le code, étape par étape, par exemple? Qu'est-ce que 'NumOfPage'? (Et pourquoi utilisez-vous un tableau, et pourquoi utilisez-vous une boucle 'while' quand une boucle' for' serait plus simple?) –

+0

NumOfPage est un nombre de pages que je veux surfer, par exemple: 10. Num Of Page est entré dans une zone de texte. While or For n'est pas un problème pour les hommes, tant que la syntaxe est bonne. J'ai déjà débogué, la page [i] = "je" comme je veux. Donc, tout semble juste, c'est la raison pour laquelle je ne sais pas pourquoi ça ne marche pas gars – vyclarks

+1

Eh bien, vous n'avez rien dit sur ce qui se passe quand vous franchissez dans votre boucle. Je vous recommande également de séparer 'ie.Link (Find.ByText (page [count])) .Cliquez()' en trois étapes: l'appel à 'Find.ByText', l'appel à' Link' et l'appel à 'Click'. Cela va faciliter le débogage. –

Répondre

0

Je pense que vous ne devriez pas utiliser la méthode Click() pour aller à la page suivante, je reconnu que Click() sera effectuée que lorsque le Link est visible, de sorte que vous devez faire défiler la barre de défilement verticale vers le bas pour afficher la Link première (le défilement manuel ou par programme fonctionne comme vous voulez). Cependant, je pense que pour aller à la page suivante, vous pouvez appeler la méthode GoTo() à la place avec le Url obtenu à partir du Link trouvé. Je l'ai testé OK mais le délai entre les changements de page est un peu grand (environ 2 secondes ou plus). Je ne sais pas pourquoi vous voulez faire cela et je voudrais savoir de vous:

for (int i = 2; i < NumOfPage; i++) 
{ 
    ie.GoTo(ie.Link(WatiN.Core.Find.ByText(i.ToString())).Url);//Don't need quotes at all. 
} 

:)

0
 // Setup browser object 
     var browser = new IE(); 
     var url = "www.google.com"; 
     browser.GoTo(url); 

     var searchBox = browser.TextField(Find.ByName("q")); 
     searchBox.Value="Rex"; 

     //click on the search button 
     var btnSearch = browser.Button(Find.ByValue("Search")); 
     btnSearch.Click(); 
     //wait for browser to load properly 
     browser.WaitForComplete(); 

     // Find the navigation menu table    
     var navigationtable = browser.Table(Find.ById("nav")); 

     // To go to the second page 
     var secondpage = navigationtable.Link(Find.ByText("2")); 
     secondpage.Click(); 
     //wait for browser to load properly 
     browser.WaitForComplete(); 

cela va tout simplement à la deuxième page maintenant si vous voulez faire une boucle par

puis

for (int i = 2; i <= 10; i++) 
{ 
var nextpage = navigationtable.Link(Find.ByText("i")); 
//check if the link exists 
/if yes then click on it 
if(nextpage.Exists) 
nextpage.click(); 
browser.waitforComplete 
} 
Questions connexes