量角器 - 忽略同步标志

时间:2016-10-18 01:37:05

标签: protractor

我已经开始在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);

2 个答案:

答案 0 :(得分:0)

很少有事情需要解决:

  • 等待“点击”通过
  • 在Angular Page上使用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');
              });
        });
    },