Selenium和PhantomJS需要30秒才能打开每个链接

时间:2015-01-31 19:47:48

标签: c# performance selenium phantomjs screen-scraping

我正在尝试使用Selenium和PhantomJS打开一个网站并获取一些数据,但是打开一个网站需要花费很多时间(大约30秒)。每次我打开其他链接我都要等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,但这不起作用。

2 个答案:

答案 0 :(得分:2)

您必须等待30秒,因为您尚未定义默认值为30秒的超时。您应该使用此预定义的驱动程序服务。

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

答案 1 :(得分:1)

Selenium的默认超时为30秒。您正在使用browser.FindElements()(复数版本),它会在继续之前等待整整30秒!

您可以使用browser.manage().timeouts().implicitlyWait()减少超时,也可以使用显式超时。