2016-03-03 54 views
0
  • 我有我需要測試的AngularJS應用程序
  • 我無法修改它。
  • 我寫我的硒/ Java測試,使用JavascriptExecutor爲JS執行
  • 我需要從javascript點擊複選框(這是必要的),在我的測試

複選框:如何通過點擊外部javascript複選框來更新AngularJS模型?

<input class="ng-pristine ng-valid" type="checkbox" ng-model="row.selected"> 

問題:

如何在Angular模型中觸發更新row.selected變量的事件?

注意: AngularJS應用程序完美工作時,人的手點擊鼠標。它不可能沒有錯。

我曾嘗試:

jsExecutor.executeScript("" 
    + "angular.element(arguments[0]).trigger('click'); " 
    + "return 'doesnt matter what';",proxy); 
  • proxyWebElement
  • 在其他測試用例
  • 的鏈接時,這個方法工作

結果: 的複選框已被取消/檢查a在JavaScript運行但模型的row.selected變量沒有。

+1

AngularJS的問題,您需要更新模型,而不是直接使用點擊的方法。例如,請參閱http://stackoverflow.com/questions/15424910/angularjs-access-scope-from-outside-js-function。在你的案例中設置模型爲true。 – Navaneet

+0

是不是有一個通用的方法?不同的ng模型將意味着爲應用中的每個頁面編寫特定的腳本,例如 – nnitramm

回答

0

觸發點擊兩次解決了自動測試目的的問題。

這意味着複選框在初始狀態下以可視方式結束,因爲它被點擊兩次(選中,未選中或未選中並選中)。

模型被更新,就像複選框被單擊一次。

有可能是在與https://github.com/angular/angular.js/issues/3470

相關問題