0

Google の結果ページの 2 ページ目にクロールするのに役立つ簡単なコードがあります。

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

私が望むのは、入力されたページ数でさらに次のページにクロールすることだけなので、次のようなループを作成します。

                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++;    
                }

しかし、その結果、最初のページで一時停止し、次のページへのクロールはありません。ループがうまくいかないようです。問題はどこだ???

4

2 に答える 2

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();

ループスルーしたい場合、これは単に2番目のページに移動します

それから

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
}
于 2013-07-10T06:04:56.370 に答える
0

Click()メソッドを使用して次のページに移動するべきではないと思います. が表示されてClick()いる場合にのみ実行されることを認識したため、最初のページLinkを表示するには、垂直スクロールバーを一番下までスクロールする必要がありますLink(手動またはプログラムによるスクロールは必要に応じて機能します) )。ただし、次のページに移動すると思いますが、GoTo()代わりにUrlgot from the foundでメソッドを呼び出すことができますLink。問題なくテストしましたが、ページ切り替え間の遅延が少し大きくなります (約 2 秒以上)。なぜあなたがこれをしたいのかわからないので、あなたからそれを知りたいです:

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

:)

于 2013-07-10T05:15:08.790 に答える