1

如果使用 ctrl+F5(非调试)运行,很少有行程序可以完美运行,但使用 F5(调试)运行时会抛出异常:

private static void Main(string[] args)
{
    IWebDriver driver = new ChromeDriver(@"C:\Program Files (x86)\ChromeDriver");

此语句抛出“无法建立连接,因为目标机器主动拒绝它”异常,没有内部异常。

同样,它与 ctrl-f5 完美配合

  • 视窗 7 x64
  • 对比 2012
  • 使用 Selenium WebDriver NuGet Packcge 2.35(最新)
  • 使用 ChromeDriver.exe (v2.4.226107) (最新)
  • 所有防火墙和杀毒软件等都被杀死了。
  • 以管理员身份运行 VS 并关闭 UAC

为什么调试和不调试运行之间有这种区别?(我知道调试器有一个宿主进程请不要解释)

如何在调试模式下运行这个简单的程序?

有任何想法吗?提前谢谢

4

2 回答 2

3

感谢所有花时间阅读和思考这个问题的人。我已经解决了。好吧,这是一件愚蠢的事情,但我很确定这里有类似的问题抱怨 Selenium WebDriver 和

“无法建立连接,因为目标机器主动拒绝它”异常

有这个决议,其他答案错过了发布的解决和采取的行动之间的相关性。他们中的大多数人建议使用其他版本的 ChromeDriver.exe 并谈论版本不兼容和 ChromeDriver.exe 错误。

我认为(至少我的情况)这些决议是错误的。

“错误”来自 WebDriver 程序集,而不是 ChromeDriver.exe。我检查了 WebDriver 的来源,这里是:

while (!processStarted && DateTime.Now < timeout)
{
   try
   {
      request.GetResponse();
      processStarted = true;
   }
      catch (WebException)
   {
}

当 DriverService 类启动时,ChromeDriver.exe 立即开始使用请求轮询它。因为启动过程需要时间,所以在前几十次尝试中端口没有打开......(至少 Sleep(10) 或 Sleep(50) 在这里会很好,但无论如何)

现在的重点:如果你很不幸,你没有检查 VS 2012 Options/Debug/General 'Enable Just My Code'并且你检查了 Debug/Exceptions/Thrown 那么调试器会被这个异常打破,但你当然不会查看源代码,异常行将是您的行

IWebDriver driver = new ChromeDriver(@"C:\Program Files (x86)\ChromeDriver");

根据时间(进程启动),您可能会重复几次,您会认为您的端口、防火墙、ChromeDriver.exe 版本等与异常有关。

于 2013-10-16T09:29:02.057 回答
0

我曾经也遇到过这个错误..经过数小时的调试..终于显示出真正的错误...我的 IE 浏览器视图设置为 125%...当我将其更改回 100 %...有效。:)

于 2014-02-11T12:06:54.037 回答