【问题标题】:Protractor - Ignore Synchronisation flag量角器 - 忽略同步标志
【发布时间】:2018-12-12 14:33:15
【问题描述】:

我已经开始在 Protractor 作为我们的 e2e 自动化测试工具进行 POC。 我们的应用程序采用棱角分明的设计,非常适合。

但是,我需要通过 google 登录,这是一个非 Angular 网站,因此在我的测试开始时我声明

browser.ignoreSynchronization = true;

那我去

'https://accounts.google.com/ServiceLogin'

输入我的谷歌凭据并点击登录

此时我尝试转到我的应用程序的 URL,这是一个 Angular 应用程序,所以我希望转

browser.ignoreSynchronization = false;

以上所有步骤都是 beforeEach 的一部分,因此我可以在每次测试之前登录

但是当我将 ignoreSynchronization 设置为 false 时,我的所有测试都开始失败。 另一方面,如果我不将其设置为 false,我将不得不使用大量 browser.sleeps,因为 Protractor 仍将其视为非 Angular 应用程序并且不会等待 Angular 完全加载

我还尝试将 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);

【问题讨论】:

  • 如果切换最后两个步骤会怎样?获取下一个url(角度页面),然后设置browser.ignoreSynchronization = false;此外,为了安全起见,您还可以为 Angular 页面上的元素添加更多预期条件。

标签: protractor


【解决方案1】:

需要解决的一些问题:

  • 等待“点击”通过
  • 在 Angular 页面上使用 browser.get()

以下是修改:

signin.click().then(function () {
    browser.ignoreSynchronization = false;
    browser.get(tdurl);
    browser.waitForAngular();  // might not be necessary
});

您还可以添加带有预期条件的wait 以等待登录步骤完成 - 例如,等待特定的 URL、页面标题或页面上的元素。

【讨论】:

    【解决方案2】:
     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');
                  });
            });
        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多