espere até que angular 2+ termine de carregar o problema

Dave

Recentemente, postei uma pergunta sobre um problema que tenho testado em um aplicativo com base angular (ref: aguarde até que o Angular termine de carregar o problema )

Acontece que a verificação feita foi válida para aplicativos angular 1.x, enquanto nosso aplicativo é executado no angular 6.x.

Então descobri aquele post: Detectando que o Angular 2 acabou de ser executado

que explica como fazer uma verificação semelhante, mas para aplicativos angulares 2+. Configurei o cheque de maneira semelhante à explicação de "Michal Filip".

Também tentei usar a solução ngWebdriver proposta mais adiante no post.

Ambos sofrem do mesmo problema: a verificação sempre retornará verdadeiro como no carregamento realizado, o que não é verdadeiro.

tentei inverter a verificação, não ajudou (estado nunca mudou)

// Will check if Angular still has pending http_requests ongoing and wait if required
public void untilAngular2HasFinishedProcessing()
{
  until(() ->
    {
      log.info("Waiting on angular 2+ to finish processing");
      final boolean isReady = ((JavascriptExecutor) driver).executeAsyncScript(
        "var callback = arguments[arguments.length - 1];" +
          "if (document.readyState !== 'complete') {" +
          "  callback('document not ready');" +
          "} else {" +
          "  try {" +
          "    var testabilities =  window.getAllAngularTestabilities();" +
            "    var count = testabilities.length;" +
            "    var decrement = function() {" +
            "      count--;" +
            "      if (count === 0) {" +
            "        callback('complete');" +
            "      }" +
            "    };" +
            "    testabilities.forEach(function(testability) {" +
            "      testability.whenStable(decrement);" +
            "    });" +
            "  } catch (err) {" +
            "    callback(err.message);" +
            "  }" +
            "}"
      ).toString().equals("complete");
      log.info("Is angular 2+ ready? " + isReady);
      return isReady;
    }
  );
 }


  // sample call would be
 untilAngular2HasFinishedProcessing();

Esperado: o teste esperaria até que o Angular concluísse o carregamento antes de retornar verdadeiro

Real: retorna verdadeiro desde o início, o que eu sei que não é o caso.

Possível duplicado? Não, porque esta é uma questão problemática baseada na implementação proposta na questão vinculada.

Dave

Esta é a solução que acabei usando:

public boolean untilAngular2HasFinishedProcessing()
  {
    until(() ->
      {
        log.info("Waiting on angular 2+ to finish processing");
        final boolean isReady = (Boolean.valueOf(((JavascriptExecutor) driver)
          .executeScript(
            "try{" +
          "return (window.getAllAngularTestabilities()[0]._ngZone.hasPendingMicrotasks == " +
          "false && " +
          "window.getAllAngularTestabilities()[0]._ngZone.hasPendingMacrotasks == false && " +
          "window.getAllAngularTestabilities()[0]._ngZone._nesting == 0 &&" +

          "window.getAllAngularTestabilities()[0]._ngZone.isStable == true)" +
          "}" +
          "catch(err) {" +
          "if (err.message == ('window.getAllAngularTestabilities is not a function'))" +
          "{" +
          "return true" +
          "}" +
          "}")
          .toString()));
        log.info("Is Angular 2+ ready? " + isReady);
        return isReady;
      }
    );
    return true;
  }

Isso funcionou de forma consistente até agora.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

espere até que o Angular termine de carregar o problema

Webdriver Espere até que o carregador Ajax termine de carregar

Espere até que meu FormlyFieldConfig termine de carregar

Espere até que o tomcat termine de iniciar

Espere até que o Tomcat termine de iniciar

Espere até que o processo termine de rodar

Espere que o futuro termine

Espere até que o processo termine

Baixe arquivos de UIDocumentPicker e espere até que o download termine

espere até que a chamada de função termine em jQuery

Espere que todo o url termine de ser escrito

Espere até que uma função termine

espere que cada função Cypress () termine

Espere rápido que o fechamento termine

Espere rápido que o fechamento termine

Espere até que o evento anterior termine Rx

Como esperar que o Picasso termine de carregar as imagens no Android?

Aguarde até que uma função termine de carregar no Xamarin Forms

Espere até que o alamofire termine de obter a solicitação e fazer o objeto

espere pelas promessas internas para que o loop termine. Angular 7 / Texto datilografado

Como permitir que a atividade de carregamento espere até que o thread termine

espere que o loop termine antes de executar o código

Espere até que a função termine antes de continuar o principal (um encadeado)

Excel VBA: espere que o código de linha anterior termine sua execução completamente

Espere até que uma função termine antes de executar o segundo JS

Espere que o código interno termine antes de fazer o loop

Espere que o Swing Timer termine de não funcionar usando um loop while

Espere até que o swift for loop com solicitações de rede assíncronas termine de executar

Vue.js - espere até que a animação termine antes de atualizar um componente

TOP lista

  1. 1

    Obtendo apenas o número de uma String C #

  2. 2

    como acessar a conexão do banco de dados em visualizações no codeigniter 4

  3. 3

    Como redimensionar tabelas geradas pelo Stargazer no R Markdown?

  4. 4

    recuperar valores em uma linha de dataframes com base no valor em outro

  5. 5

    Firebase Storage Web: como fazer upload de um arquivo

  6. 6

    为什么在使用argc和argv时不会出现分段错误?

  7. 7

    Como agrupar objetos em uma lista em outras listas por atributo usando streams e Java 8?

  8. 8

    Qual é a diferença entre o tamanho do passo e a taxa de aprendizado no aprendizado de máquina?

  9. 9

    Por que definir a variável como uma string vazia não é necessária em meu código?

  10. 10

    Insert a value to hidden input Laravel Blade

  11. 11

    Configure o coletor de arquivos Serilog para usar um arquivo de log por execução do aplicativo

  12. 12

    Como ler arquivos yaml em laravel?

  13. 13

    Série Fibonacci usando programação dinâmica

  14. 14

    Como adicionar elementos a um array multidimensional em PHP?

  15. 15

    How do I set an IronPython ctypes c_char_p pointer to an absolute address that is not a valid memory address to read from?

  16. 16

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  17. 17

    Como faço para que um formulário no Access se torne uma janela pop-up?

  18. 18

    Como anexar um arquivo a um e-mail usando JavaMail

  19. 19

    Adicionar campos de texto dinâmicos por meio da seleção suspensa de componentes?

  20. 20

    如何使用SOM算法进行分类预测

  21. 21

    TypeError não capturado: não é possível atribuir a propriedade somente leitura

quentelabel

Arquivo