Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在量角器中循环页面以创建测试_Javascript_Selenium_Webdriver_Protractor - Fatal编程技术网

Javascript 在量角器中循环页面以创建测试

Javascript 在量角器中循环页面以创建测试,javascript,selenium,webdriver,protractor,Javascript,Selenium,Webdriver,Protractor,我试图创建一个循环,在几个页面中导航,并为每个页面创建稍微不同的测试。它是异步的这一事实让我很反感,我还没有找到一种方法来实现它。尝试仅使用普通循环会导致页面始终设置为数组中的最后一页。我尝试过用几种不同的方法来使用闭包,但没有任何运气。我认为这是正确的路线。我已经研究了这个问题,它给了我一些好的想法,但我仍然无法让事情顺利进行 var bs = new BasicSteps(); describe("Some description", function() { var pages

我试图创建一个循环,在几个页面中导航,并为每个页面创建稍微不同的测试。它是异步的这一事实让我很反感,我还没有找到一种方法来实现它。尝试仅使用普通循环会导致页面始终设置为数组中的最后一页。我尝试过用几种不同的方法来使用闭包,但没有任何运气。我认为这是正确的路线。我已经研究了这个问题,它给了我一些好的想法,但我仍然无法让事情顺利进行

var bs = new BasicSteps();

describe("Some description", function() {
    var pages = ['/page1', '/page2', '/page3'];

    var i = 0;
    beforeEach(function() {
        bs.navigate(pages[i]);
        browser.sleep(2000);
        i++;
    });

    for(page in pages) {
        // Code for the spec
        it('Some spec', function() {
            // Some code for the tests
            if(page == 1) {
                console.log("page1");
            }
            else if(page == 2) {
                console.log("Page2");
            } 
            else if(page == 3) {
                console.log("Page3");
            }
        });
    }
});
这会打印三次
Page3
,因为循环几乎立即执行。我尝试过使用闭包,但这会导致一些模糊的错误,并在任何操作运行之前崩溃

var funcs = [];

function createfunc(page) {
    return function() {
        // Code for the spec
    });
}

for(var page = 0; page < pages.length; page++) {
    funcs[page] = createfunc(page);
}

for(var j = 0; j < funcs.length; j++) {
    funcs[j]();
}
var funcs=[];
函数createfunc(第页){
返回函数(){
//规范代码
});
}
对于(var page=0;page
如果有一组页面需要对其应用相同的测试,则可以使用闭包绕过量角器在循环中创建测试

要编写测试循环,请执行以下操作:

// Array of objects with name and URL of each page
var pages = [{'name': 'page1', 'url': 'someurl.com/page1'},
             {'name': 'page2', 'url': 'someurl.com/page2'}];

describe("Some description", function(){
  function specBlock(curPage) {
    describe(curPage.name, function(){
      it('Some test', function () {
        // Test goes here
      });
    });
  };

  createSpecBlock = function(specBlock) {
    return specBlock;
  }

  var funcCall = createSpecBlock(specBlock);

  pages.forEach(function(curPage){
    funcCall(curPage);
  });
});

如果有一组页面需要对其应用相同的测试,则可以使用闭包来处理量角器,从而在循环中创建测试

要编写测试循环,请执行以下操作:

// Array of objects with name and URL of each page
var pages = [{'name': 'page1', 'url': 'someurl.com/page1'},
             {'name': 'page2', 'url': 'someurl.com/page2'}];

describe("Some description", function(){
  function specBlock(curPage) {
    describe(curPage.name, function(){
      it('Some test', function () {
        // Test goes here
      });
    });
  };

  createSpecBlock = function(specBlock) {
    return specBlock;
  }

  var funcCall = createSpecBlock(specBlock);

  pages.forEach(function(curPage){
    funcCall(curPage);
  });
});