从 JavaScript 返回数组时,.NET 绑定返回 a ReadOnlyCollection<object>
,而不是 a List<object>
。这样做的原因是您不能期望更改返回集合的内容并在页面上的 JavaScript 中更新它们。以下是从 WebDriver 项目自己的 .NET集成测试中获取的示例。
List<object> expectedResult = new List<object>();
expectedResult.Add("zero");
expectedResult.Add("one");
expectedResult.Add("two");
object result = ExecuteScript("return ['zero', 'one', 'two'];");
Assert.IsTrue(result is ReadOnlyCollection<object>, "result was: " + result + " (" + result.GetType().Name + ")");
ReadOnlyCollection<object> list = (ReadOnlyCollection<object>)result;
Assert.IsTrue(CompareLists(expectedResult.AsReadOnly(), list));