我已经开始在Protractor上进行POC作为我们的e2e自动化测试工具。 我们的应用程序采用棱角分明设计,非常适合。
但是,我需要通过谷歌登录这是一个非角度的网站,因此在我的测试开始时我说
browser.ignoreSynchronization = true;
然后我去
' https://accounts.google.com/ServiceLogin'
输入我的Google凭据,然后点击登录
此时我尝试转到我的应用程序的URL,这是一个有角度的应用程序,所以我希望转向
browser.ignoreSynchronization = false;
所有上述步骤都是beforeEach的一部分,以便我可以在每次测试之前登录
但是当我将ignoreSynchronization变为false时,我的所有测试都开始失败。 另一方面,如果我不把它变成假,我被迫使用很多browser.sleeps,因为Protractor仍然将它视为非角度应用程序,并且不等待角度完全加载< / p>
我还尝试将ignoreSynchronization = false放在每个单独的测试中,而不是beforeEach,但即便如此,我的所有测试都开始失败。
以下是我的beforeEach代码
browser.ignoreSynchronization = true;
browser.driver.manage().window().setSize(1280, 1024);
browser.get(googlelogin);
email.sendKeys('username');
next.click();
browser.wait(EC.visibilityOf(pwd), 5000);
pwd.sendKeys('pwd');
signin.click();
browser.ignoreSynchronization = false;
browser.driver.get(tdurl);
答案 0 :(得分:0)
很少有事情需要解决:
browser.get()
以下是修改:
signin.click().then(function () {
browser.ignoreSynchronization = false;
browser.get(tdurl);
browser.waitForAngular(); // might not be necessary
});
您还可以添加带有预期条件的wait,以等待登录步骤完成 - 例如,等待特定网址,网页标题或网页上的元素。
答案 1 :(得分:0)
Reconciliation_verifyExapanedDatainExpanedRow: function (HeaderName, texttobepresent) {
browser.waitForAngular().then(function () {
var EC = protractor.ExpectedConditions;
var columnHeaderActive = GUtils.$locatorXpath('//p-datatable//span[contains(text(),"' + HeaderName + '")]/..//span[@class="ui-cell-data"][contains(.,\'' + texttobepresent + '\')]');
browser.wait(EC.presenceOf(GUtils.$element(columnHeaderActive)), GUtils.shortDynamicWait()).then(function () {
console.log('PASS');
}, function (err) {
console.log('FAIL');
});
});
},