Forum Discussion

pedrox815's avatar
pedrox815
New Contributor
8 years ago
Solved

How to change default mapping properties of entire project

Hello,

 

I have a lot of small Delphi Applications to record with keyword tests and TestComplete 12 is recording the default properties "ClassName" and "ObjectIdentifier" in every application.

 

 

Is there a way to replace the "ObjectIdentifier" property by another? For example "NativeDelphiObject.Name"?

 

I mean , instead of recording "ObjectIdentifier", record another property automatically.

 

 

Thanks in advance.

  • Bom dia Pedro, como vai?

     

    Para esse problema, o TC tem uma opção chamada NameMapping Templates. (Help online: https://support.smartbear.com/viewarticle/81122/).

     

    Para utilizar, acesse o NameMapping do seu projeto, Right Click na lista de Mapped Objects ou Aliases (não faz diferença) e selecione "Add Template". A partir da tela que abrir, selecione um objeto que possui as propriedades que você deseja que sempre sejam mapeadas, e Add.

     

    Agora são mostradas todas as propriedades do campo, mais as colunas Active e Store. Em Active, marque todas as opções que vão ter os mesmos valores em todos os campos, por exemplo, WndClass "Edit" para todos os Edits. Já em Store, marque todos os campos que você quer armazenado, mas que não necessariamente terão o mesmo valor dos demais campos, continuando com o exemplo do Template Edit, poderia ser marcado a opção ControlID "000", que no próximo campo Edit, não será o mesmo valor. 

     

    Após ter isso gravado, sugiro que faças a exportação da opção "Root _ NameMapping _ Templates" em um arquivo único, para que possas importar nos projetos futuros, ao invés de refazer toda vez!

     

    Se tiver alguma dúvida, estou à disposição!

6 Replies

  • Bom dia Pedro, como vai?

     

    Para esse problema, o TC tem uma opção chamada NameMapping Templates. (Help online: https://support.smartbear.com/viewarticle/81122/).

     

    Para utilizar, acesse o NameMapping do seu projeto, Right Click na lista de Mapped Objects ou Aliases (não faz diferença) e selecione "Add Template". A partir da tela que abrir, selecione um objeto que possui as propriedades que você deseja que sempre sejam mapeadas, e Add.

     

    Agora são mostradas todas as propriedades do campo, mais as colunas Active e Store. Em Active, marque todas as opções que vão ter os mesmos valores em todos os campos, por exemplo, WndClass "Edit" para todos os Edits. Já em Store, marque todos os campos que você quer armazenado, mas que não necessariamente terão o mesmo valor dos demais campos, continuando com o exemplo do Template Edit, poderia ser marcado a opção ControlID "000", que no próximo campo Edit, não será o mesmo valor. 

     

    Após ter isso gravado, sugiro que faças a exportação da opção "Root _ NameMapping _ Templates" em um arquivo único, para que possas importar nos projetos futuros, ao invés de refazer toda vez!

     

    Se tiver alguma dúvida, estou à disposição!

    • pedrox815's avatar
      pedrox815
      New Contributor

      altemann wrote:

      Bom dia Pedro, como vai?

       

      Para esse problema, o TC tem uma opção chamada NameMapping Templates. (Help online: https://support.smartbear.com/viewarticle/81122/).

       

      Para utilizar, acesse o NameMapping do seu projeto, Right Click na lista de Mapped Objects ou Aliases (não faz diferença) e selecione "Add Template". A partir da tela que abrir, selecione um objeto que possui as propriedades que você deseja que sempre sejam mapeadas, e Add.

       

      Agora são mostradas todas as propriedades do campo, mais as colunas Active e Store. Em Active, marque todas as opções que vão ter os mesmos valores em todos os campos, por exemplo, WndClass "Edit" para todos os Edits. Já em Store, marque todos os campos que você quer armazenado, mas que não necessariamente terão o mesmo valor dos demais campos, continuando com o exemplo do Template Edit, poderia ser marcado a opção ControlID "000", que no próximo campo Edit, não será o mesmo valor. 

       

      Após ter isso gravado, sugiro que faças a exportação da opção "Root _ NameMapping _ Templates" em um arquivo único, para que possas importar nos projetos futuros, ao invés de refazer toda vez!

       

      Se tiver alguma dúvida, estou à disposição!


      Perfeito!

       

      Exatamente isso que precisava.

       

      Muito obrigado.

  • Good afternoon,


    Are you Brazilian? Explain in Portuguese there, it is easier for me ... I understand enough about, not all, the necessary.
    • pedrox815's avatar
      pedrox815
      New Contributor

      Olá,

       

      vou tentar explicar melhor :smileywink::

       

      Quando gravo meus testes no TestComplete, ele automaticamente mapeia a maioria dos objetos com base em duas propriedades: ClassName e ObjectIdentifier.

       

      Acontece que eu queria substituir esse ObjectIdentifier por outra propriedade dos objetos (por exemplo: NativeDelphiObject.Name) automaticamente no momento em que estou gravando.

       

      Atualmente estou fazendo manualmente: gravo um teste, vou lá no NameMapping e faço a substituição do ObjectIdentifier por outra propriedade para cada objeto capturado.

       

      Na versão 10 do TestComplete se não me engano ele automaticamente gravava a propriedade NativeDelphiObject.Name no lugar dessa ObjectIdentifier e funcionava perfeitamente. Mas capturando o ObjectIdentifier começaram a surgir alguns problemas no reconhecimento dos objetos na tela aqui.

       

      Obrigado pela atenção.

      • p_bremm11's avatar
        p_bremm11
        Contributor

        Entendo,

        Nunca alterei esse valor de identificação dos objetos.

        Quando é alterado o objeto, é mais fácil vc atualizar ele. Ou seja: digamos que no script está assim:

        Alises.TestApll.tPanel.tcxGrid.Text

        Mas depois de uma nova versão o TestComplete ñ está mais encontrando esse mapeamento, porque agora ele identifica assim:

        Alises.TestApll.tPanel.tPanel2.tcxGrid.Text.

        Então, ao invés de eu atualizar o Script, eu acesso o NameMapping, com a aplicação aberta e com a tela do mapeamento aberta, de dois clique na propriedade final nesse caso tcxGrid, ai ele vai trazer uma tela de "Atualização pela tela" Update on Scream (algo parcido).

        Clicar nela ai seleciona o Objeto nesse caso o tcxGrid. Após isso, o NameMapping sempre vai enteder que esse cara (Alises.TestApll.tPanel.tcxGrid.Text) é esse em memória (Sys.TestApll.tPanel.tPanel2.tcxGrid.Text).

         

        Acabei aprendendo pois quando entrei em minha empresa não renomearam, ai isso ferrou tudo conforme o Sistema foi evoluindo.

        Tem como alterar tudo no mapeamento, assim evitando manutenção no código do teste.