量角器处理流量控制中的promise和数组

时间:2019-03-20 04:22:44

标签: jasmine protractor

我正在使用Protractor测试运行程序进行一些Jasmine端到端测试。我正在测试的应用程序是一个简单的网页。我已经有一个可以正常工作的测试方案。

现在,我想改进代码,以便可以使用相同的脚本两次运行测试方案。

  • 第一次:测试将在页面的英文版上进行
  • 第二次:在同一页的翻译版本上。

这是我的代码:

var RandomSentenceInThePage = ["Sentence in English", "Phrase en Francais"];
var i;
var signInButton;
var TranslationButton;
var RandomSentenceInThePageBis;
i = 0;
//Runs the testing scenario twice
while (i < 2) {
  describe('TC1 - The registration Page', function() {
    //the translation is done on the second iteration
    if (i != 0) {
      beforeEach(function() {
        browser.ignoreSynchronization = true;
        browser.get('https://Mywebsite.url.us/');
        //we get the translation button then click on it
        TranslationButton = element(by.css('.TranslationButtonClass'));
        TranslationButton.click();
      });
    }
    //On the first iteration, we run the test on the not translated page…
    Else {
      beforeEach(function() {
        browser.ignoreSynchronization = true; //Necessary for the browser.get() method to work inside the it statements.
        browser.get('https://Mywebsite.url.us/');
      });
    }

    it('should display the log in page', function() {
      //Accessing the browser is done in the before each section
      signInButton = element(by.css('.SignInButtonClass'));
      signInButton.click();

      RandomSentenceInThePageBis = element(by.css('.mt-4.text-center.signin-header')).getText();
      /*******************[HERE IS WHERE THE PROBLEM IS]*******************/
      expect(RandomSentenceInThePageBis.getText()).toEqual(RandomSentenceInThePage[i]);
    });
    /*******************************************************************/
  });
}

我突出了有问题的部分。甚至在比较RandomSentenceInThePage [i]和RandomSentenceInThePageBis之间的代码之前,代码就一直运行。最终将它们进行比较后,循环就完成了。

根据我在其他相关主题上看到的内容,由于使用了Expect语句和getText()方法,我正在处理promise,必须等待它们被解决。经过一整天的尝试,我认为我可以使用有关如何处理此承诺解决方案的提示。让我知道您是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

while循环更改为for循环,并通过i而不是let声明变量var

let可以在代码块范围内声明变量,例如forif块等,但是var不能。

因为量角器api执行异步,因此expect()...第二次执行。 i的值已变成2,而不是1

for(let i=0;i<2;i++) {

  describe('TC1 - The registration Page', function() {
     ....
  })
}