如果我从Internet Explorer 11中的开发人员控制台执行此命令,
angular.element('viewer-uigrid').scope().$parent.$parent.reportReq.ReportDefinition.DataSets[0].ColumnDefinitions
我找回了一系列对象。
在测试自动化中,如果我尝试使用:
执行相同的代码var colDefs = Driver.ExecuteJavaScript<object>("angular.element('viewer-uigrid').scope().$parent.$parent.reportReq.ReportDefinition.DataSets[0].ColumnDefinitions[0]; ");
colDefs变量返回null。 Driver是OpenQA类型的对象.Selenium.IE.InternetExplorerDriver和ExecuteJavaScript是OpenQA.Selenium.Support.Extensions提供的扩展。
知道为什么C#中的返回值为null,但它从控制台返回一个数组?
答案 0 :(得分:1)
一位同事阐明了这一点。获取值的正确方法是在java脚本字符串中使用“return”,以便值返回并且不会被丢弃,如下所示:
var colDefs = Driver.ExecuteJavaScript<object>("return angular.element('viewer-uigrid').scope().$parent.$parent.reportReq.ReportDefinition.DataSets[0].ColumnDefinitions[0]; ");