我正在使用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,必须等待它们被解决。经过一整天的尝试,我认为我可以使用有关如何处理此承诺解决方案的提示。让我知道您是否需要更多信息。
答案 0 :(得分:0)
将while
循环更改为for
循环,并通过i
而不是let
声明变量var
let
可以在代码块范围内声明变量,例如for
,if
块等,但是var
不能。
因为量角器api执行异步,因此expect()...
第二次执行。 i
的值已变成2
,而不是1
for(let i=0;i<2;i++) {
describe('TC1 - The registration Page', function() {
....
})
}