当前位置: 首页 > 知识库问答 >
问题:

Selenium Firefox WebDriver在WCF投掷"未能在45000 ms内启动套接字"

魏凯捷
2023-03-14

异常堆栈跟踪:

OpenQA。硒。WebDriverException:未能在45000毫秒内启动套接字。尝试连接到以下地址:OpenQA的127.0.0.1:7055。硒。火狐。FirefoxDriverServer。在OpenQA上连接浏览器(TimeSpan timeToWait)。硒。火狐。FirefoxDriverServer。在OpenQA上启动()。硒。火狐。FirefoxDriverCommandExecutor。在OpenQA上执行(命令commandToExecute)。硒。遥远的RemoteWebDriver。在OpenQA中执行(字符串驱动程序commandtoexecute,字典的2个参数)。硒。遥远的RemoteWebDriver。在OpenQA上启动会话(ICapabilities desiredCapabilities)。硒。遥远的RemoteWebDriver。。DtvAutomation的ctor(ICommandExecutor commandExecutor,ICapabilities desiredCapabilities)。硒。应用程序编程接口。硒荧光试验。DtvAutomation处的CreateWebDriver()。硒。应用程序编程接口。硒测试'1。运行()

引发异常的代码正在调用Firefox WebDriver构造函数:

protected override FirefoxDriver CreateWebDriver()
{
    lock(this.syncRoot)
    {
        var ffBinary = new FirefoxBinary();
        var ffProfile = new FirefoxProfile();
        return new FirefoxDriver(
            binary: ffBinary,
            profile: ffProfile,
            commandTimeout: TimeSpan.FromMinutes(2));
    }
}

我正在使用来自Visual Studio 2013-"WCF Application Service"项目的selenium 2.46(通过Nuget包)。火狐是38.0.5(最新)。当我从Visual Studio(调试模式)启动WCF时,一切工作正常-没有例外。当我将WCF发布到本地IIS时,它会抛出此错误。

我试过以下方法:

  • 更新了Nuget包-确保我是最新的
  • 火狐降级到34.0.5版本
  • 将Firefox升级到最新版本
  • 从防火墙打开端口7055
  • 更改IIS应用程序/app-pool的凭据,使用管理员帐户
  • 在异常情况下,重新尝试使用另一个端口初始化WebDriver

这些似乎都不起作用。你知道有什么问题吗?

共有3个答案

聂永怡
2023-03-14

我刚刚面临着类似的问题。我用的是Selenium WebDrive Nuget Package v2.48 Firefox版本41.0

起初,我认为这是FF和Webdriver之间版本冲突的问题,所以将Webdriver升级到这个版本。没有固定的。接下来,我将FF降级为V31.0。没有固定的。第三,我想到了最近的一个变化,这是我的一行代码

p.SetPreference("webdriver.log.file", "/tmp/firefox_console");

在这段代码中

            FirefoxProfile p = new FirefoxProfile();
            //p.SetPreference("webdriver.log.file", "/tmp/firefox_console");
            //p.SetPreference("dom.ipc.plugins.flash.disable-protected-mode", true);
            driver = new FirefoxDriver(p);
            driver.Manage().Window.Maximize();

在注释后,Set首选方法=成功!火狐正像预期的那样打开。

郭凡
2023-03-14

我也遇到了同样的问题,解决方案是将应用程序池标识从“ApplicationPoolIdentity”切换到更强大的用户。

拓拔安邦
2023-03-14

我也有同样的问题。将应用程序池标识更改为类似LocalSystem的内容解决了这个问题,但您不希望在生产中这样做。

相反,我在应用程序池的高级设置中找到了一个设置,LoadUserProfile,该设置被设置为False。如果将其设置为True,应用程序池将加载一个用户配置文件,从而消除Selenium问题。

您需要至少运行IIS 7,您可以在这里阅读更多关于设置的信息。

 类似资料:
  • 我使用的是FF版本19 直到昨天一切都很好,今天早上我突然发现了这个错误,我的代码和之前运行的代码一样,没有任何改变 错误消息: 以下是我的源代码:

  • 我向服务器调用一个请求网络,服务器总是响应如下所示的格式json: 对于每种请求,只有jsonObject数据包含不同的字段。新响应的示例: 因此,我决定让一个通用类调用ServerResult包含一个字段“Object”,以便将其强制转换为特定对象。 //ServerResult.class //client.java 请求完成后,我通过GSON将json转换为ServerResult对象: 然

  • 我已经将我的应用程序迁移到QUKUS Reactive,每当我使用HiberNate Reactive Panache持久化实体时,我都会看到此日志消息 2022-01-30 17:04:04,864 DEBUG[org . Hib . RES . jdb . int . logicalconnectionmanagedimpl](vert . x-event loop-thread-5)< co

  • 问题内容: 我收到此错误: 当我在代码中执行以下操作时: 真的无法简单得多,但是错误是致命的。有任何想法吗? 问题答案: 我最终完成了这项工作,删除了NuGet在安装WebDriver时添加的所有软件包子文件夹,并决定手动添加它们。创建一个“ lib”文件夹,然后将硒二进制文件解压缩到该文件夹​​中。然后添加对所有二进制文件的引用。现在看来还好。

  • 问题内容: 抛出异常并直接捕获它只是为了打印错误是否有意义? 问题答案: 无需抛出并捕捉,您可以简单地调用: 甚至更简单: 您还可以从当前线程获取堆栈跟踪作为数组: 如果要执行更详细的操作,例如在运行时检查堆栈(例如,获取调用方法的名称)。

  • 我得到一个空指针异常,而自动布线我的类之一。 我尝试过使用不同的注释,比如和 Stacktrace: