【问题标题】:Wait and Sleep does not work on protractor等待和睡眠在量角器上不起作用
【发布时间】:2019-12-18 20:18:06
【问题描述】:

我在使用自动化测试测试屏幕时遇到问题,我正在填写所有输入字段,然后按下提交按钮,但等待/睡眠似乎不起作用,这导致按钮在输入已满。

为什么我的睡眠/等待不起作用?

describe('Wizard - Organizacional data - Test Plan - 150454', function () {

const functionsPage = new functionObjectPage();

it('148454 - Incluir informações do administrador e Escritório.',  function() {

    browser.wait(until.presenceOf(element(by.id('openWizard'))), 30000, '');
    browser.executeScript("document.querySelector('#openWizard').click()");

    browser.executeScript("document.querySelector('#usuarioPrincipal').value = 'User master'");

    browser.executeScript("document.querySelector('#emailUsuarioPrincipal').value = 'master@master.com'");

    browser.executeScript("document.querySelector('#officeName').value = 'Office Name'");

    browser.executeScript("document.querySelector('#cnpj').value = '57375882000197'");

    browser.sleep(5500);
    browser.executeScript("document.querySelector('#btnNextStep').click()");

});

}); 

我不知道 browser.ignoreSynchronization = true;影响睡眠/等待的工作方式,或者是否有任何其他配置可以影响它。 这是我的 Proctor 配置:

var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
var env = process.env.env || 'local';
var config = require('./e2e/src/helper/config')[env];
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');



exports.config = {
directConnect: true,
  capabilities: {
    browserName: 'chrome'
},
SELENIUM_PROMISE_MANAGER: false,
framework: 'jasmine',
specs: [
  './e2e/src/*_spec.js',
],
suites: {
  pages: './e2e/src/*_spec_suite.js',
},
baseUrl: config.baseUrl,
jasmineNodeOpts: {
  showColors: true,
  defaultTimeoutInterval: 2000000,
  print: function () {}
},
onPrepare: function () {

  require('jasmine2-custom-message');

  var jasmineReporters = require('jasmine-reporters');

  var junitReporter = new jasmineReporters.JUnitXmlReporter({
    consolidateAll: true,
    savePath: 'testresults',
    filePrefix: 'reportXMLoutput'
  });

  jasmine.getEnv().addReporter(
    new Jasmine2HtmlReporter({
      savePath: 'testresults/screenshots'
  }));

  jasmine.getEnv().addReporter(junitReporter);

  jasmine.getEnv().addReporter(new SpecReporter({
      suite: {
          displayNumber: true
      },
      spec: {
          displayStacktrace: true,
          displayErrorMessages: true,
          displaySuccessful: true,
          displayFailed: true,
          displayPending: true,
          displayDuration: true
      }
  }));
  browser.ignoreSynchronization = true;
  browser.driver.manage().timeouts().implicitlyWait(15000);
  browser.driver.manage().window().maximize();
  }
  };

【问题讨论】:

    标签: protractor automated-tests integration-testing


    【解决方案1】:

    您的配置中有SELENIUM_PROMISE_MANAGER: false,这意味着您需要使用async/await 来同步执行步骤

    describe('Wizard - Organizacional data - Test Plan - 150454', () => {
    
    const functionsPage = new functionObjectPage();
    
    it('148454 - Incluir informações do administrador e Escritório.',  async () => {
    
        await browser.wait(until.presenceOf(element(by.id('openWizard'))), 30000, '');
        await browser.executeScript("document.querySelector('#openWizard').click()");
    
    etc..
    etc..
    

    【讨论】:

    • 如果我使用 SELENIUM_PROMISE_MANAGER: true,等待和睡眠是否有效?
    • 这两种情况都有效。如果您不想使用 async/await 并想使用 PROMISE_MANAGER(已过时),则只需将其设置为 true(不更改语法)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2012-10-29
    • 2013-05-23
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多