【问题标题】:How can I get waitFor to work when using canopy?使用冠层时如何让 waitFor 工作?
【发布时间】:2014-07-21 22:08:21
【问题描述】:

我正在使用 Canopy,但无法使用 waitFor 方法。

我正在尝试这样使用它:

waitFor noBlockUI

noBlockUI 函数在哪里:

let noBlockUI () =
    (someElement "div.blockUI").IsNone

现在 waitFor 调用位于 F# 模块中的函数中,我正在从 C# 项目中调用该函数。

我发现我必须将 FSharp.Core 添加到我的 C# 项目中才能使任何调用正常工作。有几个 Microsoft 为 FSharp 编写的 NuGet 包:

如果我使用 4.0.0 包,那么当执行带有 waitFor 的方法时,我会收到此错误:

System.MissingMethodException:找不到方法:'Microsoft.FSharp.Core.FSharpOption`1 canopy.core.someElement(System.String)'。

但是如果我使用 4.3.0.0 包,那么当我尝试运行我的测试时,我会立即得到:

System.TypeInitializationException : '.$canopy.core' 的类型初始化程序引发了异常。 ----> System.IO.FileLoadException:无法加载文件或程序集“FSharp.Core,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

有什么想法可以让waitFor 工作吗?

【问题讨论】:

  • 暂时我回到了我最初写的C#代码等待上面的条件。不过,仍然希望找到 F# 解决方案。

标签: f# canopy-web-testing


【解决方案1】:

尝试添加一个包含如下内容的 app.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

【讨论】:

  • 感谢您的建议!我查看了我的 C# 项目的 app.config,但无论我使用的是 4.0.0 还是 2.3.0/4.3.0 NuGet 包,它都已包含该部分。
猜你喜欢
  • 1970-01-01
  • 2015-07-06
  • 2021-06-14
  • 1970-01-01
  • 2017-06-01
  • 2021-07-17
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
相关资源
最近更新 更多