C# 多个进程并行运行时的Selenium WebDriver异常

C# 多个进程并行运行时的Selenium WebDriver异常,c#,sockets,selenium,exception,parallel-processing,C#,Sockets,Selenium,Exception,Parallel Processing,我有一个过程,使用SeleniumWebDriverforFirefox,自动查找特定站点上的信息。由于要查找的数据量很大,我正在并行运行此过程的多个副本。有时他们是好的,有时我得到一个例外,我不明白的原因。该进程是用C#编写的,在Windows上运行。每个进程都创建自己的Selenium、FF web驱动程序实例,我看到每个进程都有一个单独的FireFox进程。无多踏板(在一个过程内)。我不明白究竟是什么问题。找不到任何可以告诉我更多信息的文档。 如果有人有想法,我将非常感谢任何信息/建议 例

我有一个过程,使用SeleniumWebDriverforFirefox,自动查找特定站点上的信息。由于要查找的数据量很大,我正在并行运行此过程的多个副本。有时他们是好的,有时我得到一个例外,我不明白的原因。该进程是用C#编写的,在Windows上运行。每个进程都创建自己的Selenium、FF web驱动程序实例,我看到每个进程都有一个单独的FireFox进程。无多踏板(在一个过程内)。我不明白究竟是什么问题。找不到任何可以告诉我更多信息的文档。 如果有人有想法,我将非常感谢任何信息/建议

例外情况是:

“OpenQA.Selenium.WebDriverException:意外错误。System.Net.WebException:无法连接到远程服务器-->System.Net.Sockets.SocketException:每个套接字地址(协议/网络地址/端口)通常只允许使用一次127.0.0.1:7056”

在一个给定的进程中,我看不出有什么东西可以尝试对套接字地址进行多次“使用”。从日志中,我看到不同的进程使用不同的端口(上面的“7056”在每个进程中是不同的数字)


感谢您在advace中

我最近遇到了这篇文章,发现了一篇关于微调网络设置的非常有趣的文章


因此,如果您在测试中运行高度并行,但没有足够的端口打开,并且超时时间很长,那么您将耗尽套接字,这将发生。要么增加端口,减少等待时间,要么检查可能导致实例挂起的原因。

只需补充一点:我没有运行Selenium server;只需使用Selenium WebDriver DLL(用于C#)另一个变体:“OpenQA.Selenium.WebDriverException:向远程WebDriver服务器发送HTTP请求以获取URL时,引发了一个带有空响应的异常。异常状态为ConnectFailure,消息为:无法连接到远程服务器-->System.Net.WebException:无法连接到远程服务器-->System.Net.Sockets.SocketException:。。。。。“(其余部分如第一个示例所示;对于此处的字符限制来说太长)Webdriver的工作原理是运行一个守护进程,selenium程序将通过http与之通信。无论如何,如果您以高度并行的方式执行此操作,则有时会出现连接不足的情况。原因是即使您关闭了连接,操作系统仍会将该连接“锁定”“几分钟。查看此链接:现在,对您来说,最简单的解决方案可能是减慢或减少并行化。正如这里所建议的,我敢尝试4alpha版本(目前为07),它适合我。