2015-01-31 33 views
3

我想用PhantomJS打開一個網站並使用Selenium獲取一些數據,但是它需要花費很多時間打開一個網站(大約30秒)。每次我打開其他鏈接,我都必須等待30+秒。我的代碼有什麼問題?Selenium和PhantomJS需要30秒才能打開每個鏈接

 static void Main(string[] args) 
     { 
     IWebDriver browser = new PhantomJSDriver(); 

     var URL = "http://www.cbssports.com/nba/playerrankings "; 

     browser.Navigate().GoToUrl(URL); 

     //Position 
     var title = browser.FindElements(By.CssSelector(".tableTitle")); 
     Console.WriteLine(title.First().Text); 

     Console.Read(); 
     } 

事情我試圖做:
1. Set PhantomJS proxy type to none
2. Disable internet option: automatically detect settings
3. Disable IPv6 protocol

PhantomJS release notes要求,有Microsoft Windows上的網絡性能的一些已知問題。根據發行說明,解決方案是將代理類型設置爲none,但這不起作用。

+0

您使用哪種硒和phantomjs版本?謝謝。 – alecxe 2015-01-31 21:04:34

+0

有一個技巧讓phantomjs無法加載所有資產(你不需要css,圖像等)。我不記得它,但如果你谷歌爲它,你會發現它。 – pguardiario 2015-02-01 01:04:17

+0

我使用PhantomJS 1.9.8和Selenium 2.44.0 – Jonas 2015-02-02 16:25:17

回答

2

您必須等待30秒,因爲您尚未定義默認爲30秒的超時。您應使用此預定義的驅動程序服務。

 var phantomJSDriverService = PhantomJSDriverService.CreateDefaultService(); 
     IWebDriver browser = new PhantomJSDriver(phantomJSDriverService); 
     browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(0)); 
1

Selenium的默認超時時間爲30秒。您正在使用browser.FindElements()(複數版本),在繼續前等待整整30秒!

您可以使用browser.manage().timeouts().implicitlyWait()來減少超時,或者您可以使用顯式超時。

相關問題