关于 javascript:angular JS 中的函数流

flow of functions in angular JS

我是protractor和angular js 的新手。我想使用protractor和 Angular js 自动化 Web 应用程序的测试。 Web 应用程序有一个登录页面,其后是包含下拉菜单和输入字段的主页。我已经编写了protractor代码来进行测试以登录到应用程序。但在那之后它没有执行我为点击下拉菜单编写的函数我的问题是我应该在哪里放置下拉选择的函数。我的流量是...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   var  username = element(by.model('login.username'));
   var password = element(by.model('login.password'));
   var goButton = element(by.buttonText("Login"));
   function login_page(a, b) {    
      username.sendKeys(a);
      password.sendKeys(b);
      goButton.click();
    }
    beforeEach(function() {
       browser.get('my_url');
     })
    function seldrop(element, optionNum) {
       console.log('in seldrop');
       var selectDropdownbyNum = function ( element, optionNum ) {  
       if (optionNum){
           var options = element.querySelectorAll('.dropdown-toggle')  
           .then(function(options){
            options[optionNum].click();
            console.log(options);
       });
     }
  }
  }

  it('put in values', function() {
  login_pg('usrname', 'passwd');
  const selector = seldrop(element,'3');
    colsole.log(selector);
   });

当我通过protractor执行 JS 时,它确实显示成功但只是成功登录就是这样。
seldrop 函数似乎没有被调用。它的顺序是否正确?


我没有看到元素变量 [seldrop(element,'3')] 被定义为全局变量或在它的块内。所以它可能会传递未定义的值。

我认为您定义函数的顺序没有问题(根据我对 javascript 中执行上下文的了解)。但作为一个标准,如果你可以在 beforeEach block

之前将所有功能放在一起会很好