我们目前正在使用硒实现自动化。 我有一个定义如下的js角代码。
var app = angular.module('myApp', ['ngCookies']);
myController.$inject = ['$scope', '$cookies', '$http', '$timeout', '$window'];
function myController($scope, $cookies, $http, $timeout, $window) {
var vm = this;
vm.handleResponse = handleResponse;
//More code
....
function handleResponse(Response) {
.......
}
}
我想从我的硒脚本中调用handleResponse函数。 我为非AngularJS代码使用了JavascriptExecutor,如下所示。但这似乎不适用于有角度的
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("var response = JSON.parse(JSON.stringify(" + sign + "));" +
"window.handleResponse(response);");
如何用硒来做到这一点?
答案 0 :(得分:0)
您为什么要执行应用程序的功能?使用硒进行测试时,通常将测试写为“黑匣子”,您不知道运行的是哪种客户端框架。
如果您确实想这样做,可以在调用addMockModule
时检查量角器的功能,基本思路是:
ng-app
指令)。查看code。
另一种方法是使用调试信息加载angular(可以通过调用angular.reloadWithDebugInfo()
来完成)。然后抓住您的根元素,并获取您的应用injector
的引用。
const injector = angular.element(document.getElementById('root')).injector()
const $controller = injector.get('$controller');
const ctrlName = $controller('ctrlName', locals = {});
ctrlName.youFunc();
参考资料: