正确使用phantomJS和代理

时间:2015-12-21 12:03:30

标签: c# selenium selenium-webdriver phantomjs

大家好>

我使用selenium和phantomJS驱动程序,所有客户端都有没有代理服务器的互联网连接,程序运行良好

如果用户有代理服务器程序可以正常工作(无需设置代理设置) 但是:

  • 有时程序无法启动(phantomJS超时异常)。
  • 有时程序会启动但运行缓慢。
  • 有时程序会在中间开始并粉碎。

我的问题是当我有代理服务器时pahntomJS的正确使用是什么 我应该启动PhantomJS服务,PhantomJS选项等等......

我尝试的事情:

  • 设置代理地址和端口。

但结果仍然相同

我知道代理没有用户名和密码,否则它不应该首先进入网站。

我的phantomJS初始化代码:

private static IWebDriver driver;
private static PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
private static PhantomJSOptions options = new PhantomJSOptions();

service.HideCommandPromptWindow = true;
service.IgnoreSslErrors = true;    
service.AddArgument(string.Format("--proxy={0}:{1}", proxyAddress, proxyPort)); // the way i tried to init proxy address

driver = new PhantomJSDriver(service, options, TimeSpan.FromSeconds(180));

driver.Navigate().GoToUrl(webSiteUrl);
driver.Manage().Window.Maximize();
  • 我应该添加更多选项,服务或添加参数以使用代理吗?

感谢。

1 个答案:

答案 0 :(得分:3)

在这个问题上似乎有些混乱,例如看PhantomJS问题: #12420#11619

乍一看,您的方法看起来是正确的(您提供了代理,其类型将设置为http by default)。然而,如Selenium-related source所述,尝试在那里显示替代设置,即

var service = PhantomJSDriverService.CreateDefaultService();
service.ProxyType = "http";
service.Proxy = "host:port";

如果仍然不够,请尝试提供所需的功能:

var options = new PhantomJSOptions();                        
options.AddAdditionalCapability(CapabilityType.Proxy, new Dictionary<string, string>
{
    {"proxyType", "manual"},
    {"httpProxy", "host:port"}
});

这些只是随机的建议,至少尝试一下,并且如果有的话,请分享对你有用的东西(我指的是PhantomJS 2.0.0和Selenium.WebDriver 2.48.2)。