您需要牢记,不能将
for-loop与promises一起使用。一切都是异步的,所以 最终它会咬到你 ,这意味着它
it已经准备好了,但测试还没有。
根据您的示例,建议创建一个名为例如的方法
logon(将其放置在Page Object或其他对象中)。它将为您完成登录和 *** 作。添加一个空的promise-
container(数组)并将promise推入其中。
当
for-loop完成后,你可以一次解决全部承诺容器,它会在彼此之后执行所有的承诺1。它看起来像这样。
var data = require('.../testdata.json');describe('homepage Test', function() { it('candidate login', function() { var promises = []; browser.driver.get('https://abcxyz.com'); for (i in data.testdata) { promises.push(expect(logon(data.testdata[i].username, data.testdata[i].password)).to.equal(true)); promises.push(console.log(i)); } Promise.all(promises); });});function logon(username, password) { element(by.id('tool_btn3')).click(); return browser.getTitle().then(function(title) { console.log("Title: " + title) if (title === "<page title>") { browser.driver.sleep(3000); element(by.id('email_input')).sendKeys(username); element(by.id('pwd_input')).sendKeys(password); element(by.xpath('//*[@id="signIn_btn"]/div[2]')).click(); browser.sleep(3000); element(by.id('setting_img')).click(); browser.sleep(2000); return element(by.id('logout_div')).click() .then(function() { return Promise.resolve(true); }); } else { return Promise.resolve(false); } });}
例如,如果您使用的是Node
7,则可以使用
async/await或使用Babel来翻译代码。如果您可以编写Typescript,还可以获得
async/await
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)