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

3

我正在尝试使用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.将PhantomJS代理类型设置为none
2.禁用Internet选项:自动检测设置
3.禁用IPv6协议

PhantomJS发行说明声称,Microsoft Windows上存在一些已知的网络性能问题。根据发布说明,解决方法是将代理类型设置为none,但这并没有起作用。


你使用的是哪个版本的Selenium和PhantomJS?谢谢。 - alecxe
有一个技巧可以让phantomjs不加载所有资源(您不需要css、图像等)。我不记得它是什么,但如果您在谷歌上搜索,您会找到它。 - pguardiario
我使用PhantomJS 1.9.8和Selenium 2.44.0。 - Jonas
2个回答

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() 减少超时时间,或者使用显式超时。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接