Identificador ordinal em QTP/UFTExemplo de identificação de objetos

⚔ Resumo Inteligente

Identificador ordinal em QTP/UFT Ć© o critĆ©rio de desempate UFT Aplica-se quando as propriedades obrigatórias e auxiliares ainda correspondem a mais de um objeto, usando os valores de ƍndice, Localização ou Data de Criação para selecionar um Ćŗnico objeto exclusivo.

  • šŸŽÆ Último recurso: UFT Adiciona um identificador ordinal somente depois que as propriedades obrigatórias e auxiliares nĆ£o conseguirem tornar uma descrição Ćŗnica.
  • šŸ”¢ ƍndice: Numbers Objetos da mesma classe, ordenados pelo código-fonte, comeƧando em 0; portanto, index:=3 seleciona a quarta correspondĆŖncia.
  • šŸ“ Localização: Numbers Os objetos sĆ£o organizados por posição na tela, dentro da janela, moldura ou caixa de diĆ”logo, de cima para baixo e da esquerda para a direita.
  • šŸ•’ Tempo de criação: Aplica-se somente a objetos do tipo Browser e registra a ordem em que cada instĆ¢ncia do navegador foi aberta.
  • šŸ—‚ļø Identificação do objeto: O tipo ordinal padrĆ£o para cada classe de objeto de teste pode ser editado em Ferramentas > Identificação de Objetos.
  • āŒØļø Descriptprogramação ive: Passe o Ć­ndice, a localização ou a data de criação como uma propriedade comum dentro da string de descrição do objeto.
  • āš ļø Fragilidade: Os valores ordinais mudam sempre que o layout da pĆ”gina Ć© alterado, portanto, considere-os como uma solução temporĆ”ria, nunca como uma escolha de design.

Identificador ordinal em QTP/UFT explicado com ƍndice, Localização e Hora de Criação

O que Ć© um identificador ordinal em QTP/UFT?

An Identificador Ordinal é uma propriedade numérica que UFT (anteriormente QTP) adiciona à descrição de um objeto quando as propriedades obrigatórias e auxiliares capturadas durante uma sessão de gravação não são suficientes para identificar o objeto de forma única. Em vez de falhar, a ferramenta recorre a um contador que diz, na prÔtica, "selecione o terceiro objeto desta classe".

Por padrão, existe um identificador ordinal para cada classe de objeto de teste. Um WebEdit é numerado de forma diferente de um WinButton, e um Browser é numerado de forma ainda diferente. Você pode visualizar ou modificar o identificador ordinal padrão de uma classe na janela de Identificação de Objeto.

Configuração do identificador ordinal no QTP/UFT Janela de Identificação de Objetos

Como mostra a captura de tela acima, a lista suspensa do identificador ordinal fica na parte inferior da caixa de diÔlogo Identificação de Objeto, abaixo das listas de propriedades obrigatórias e auxiliares. Essa posição não é acidental: ela reflete a ordem em que UFT na verdade, consulta os três grupos.

Existem trĆŖs tipos de identificadores ordinais em UFT:

  1. Baseado em Ć­ndice
  2. Com base na localização
  3. Tempo de Criação

Porque UFT Utiliza identificadores ordinais apenas como Ćŗltimo recurso.

Identificação de objetos em UFT O processo funciona em cascata. As propriedades obrigatórias são aprendidas primeiro. Se elas não produzirem uma única correspondência, as propriedades auxiliares são adicionadas uma a uma até que a descrição seja única. Somente quando ambos os grupos se esgotam é que... UFT Atribui-se um identificador ordinal e, em tempo de execução, o mecanismo de Identificação Inteligente é consultado antes que o valor ordinal seja considerado confiÔvel.

A razão para essa classificação é a estabilidade. Propriedades obrigatórias e auxiliares descrevem o que Um objeto é: seu nome, sua tag HTML, seu tipo, seu rótulo. Um identificador ordinal apenas descreve onde O objeto estava parado no momento da gravação. Qualquer alteração na pÔgina altera o número:

  • Um desenvolvedor insere um campo oculto acima daquele que vocĆŖ automatiza.
  • Um banner promocional adiciona dois links extras ao cabeƧalho.
  • Um layout responsivo reorganiza o formulĆ”rio de duas colunas para uma só.
  • Uma janela pop-up do navegador Ć© aberta antes do que durante a execução gravada.

Nenhuma dessas alteraƧƵes quebra uma descrição baseada em um nome ou ID, mas cada uma delas altera silenciosamente todos os valores de Ć­ndice e localização na pĆ”gina. Ɖ por isso que engenheiros experientes tratam um identificador ordinal como um sinal de que a descrição do objeto precisa de ajustes, e nĆ£o como uma solução definitiva. O mesmo princĆ­pio se aplica a todos os outros elementos. teste de automação estruturas em geral, incluindo estratĆ©gia de localização em Selenium.

šŸ’” Dica: Antes de aceitar um identificador ordinal, abra o objeto no Inspetor de Objetos e procure por um atributo personalizado estĆ”vel. Adicionar esse atributo Ć  lista de propriedades auxiliares da classe geralmente elimina a necessidade de um identificador ordinal em todos os objetos futuros desse tipo.

Tipos de identificadores ordinais em UFT/QTP

Baseado em Ć­ndice

  • Quando um identificador ordinal baseado em Ć­ndice Ć© usado, UFT atribui um valor ao Ć­ndice propriedade do objeto durante a gravação.
  • O valor Ć© baseado na ordem em que o objeto aparece no código-fonte, nĆ£o na tela.
  • A primeira ocorrĆŖncia tem o valor 0.
  • Os valores das propriedades de Ć­ndice sĆ£o especĆ­ficos do objeto, portanto, cada classe de objeto de teste Ć© contabilizada separadamente.
  • Portanto, se vocĆŖ usar index:=3 para descrever um objeto de teste WebEdit, UFT Procura o quarto objeto WebEdit na pĆ”gina.
  • Da mesma forma, se vocĆŖ usar index:=1 para descrever um objeto de teste WebButton, UFT Procura o segundo objeto WebButton na pĆ”gina.

Com base na localização

  • Quando um identificador ordinal baseado em localização Ć© usado, UFT atribui um valor ao local Propriedade do objeto que o identifica de forma Ćŗnica.
  • O valor baseia-se na ordem em que o objeto aparece na janela, quadro ou caixa de diĆ”logo, em relação a outros objetos com propriedades idĆŖnticas.
  • A primeira ocorrĆŖncia do objeto Ć© 0.
  • Os valores sĆ£o atribuĆ­dos em colunas, de cima para baixo e da esquerda para a direita.
  • A localização Ć© o identificador ordinal padrĆ£o para a maioria dos padrƵes. Windows classes de objetos de teste, onde o layout visual Ć© mais estĆ”vel do que a ordem da marcação.

Tempo de Criação

  • Quando o identificador ordinal do tempo de criação Ć© usado, UFT atribui um valor ao tempo de criação propriedade de um objeto do navegador.
  • Este identificador estĆ” disponĆ­vel apenas para o ambiente Web e somente para objetos de teste do navegador.
  • O valor indica a ordem em que o navegador foi aberto em relação a outros navegadores abertos.
  • O primeiro navegador aberto durante a execução recebe creationtime:=0, e os navegadores subsequentes recebem 1, 2, 3 e assim por diante.
  • Se um navegador for fechado, os navegadores restantes mantĆŖm seus valores originais em vez de serem renumerados.

ƍndice vs. Localização vs. Data de Criação: Tabela Comparativa

Os trĆŖs identificadores respondem a trĆŖs perguntas diferentes, e escolher o errado Ć© uma causa frequente de falhas intermitentes.

Aspecto ƍndice Localização: CreationTime
Nome da propriedade índice local tempo de criação
Base de encomenda Ordem na hierarquia do código-fonte/objetos Posição da tela dentro da janela, moldura ou caixa de diÔlogo Ordem em que as instâncias do navegador foram abertas
Regra de contagem Sequencial, por classe de objeto de teste Colunas, de cima para baixo e depois da esquerda para a direita. Sequencial, por instância do navegador
Primeiro valor 0 0 0
Aplica-se a Web e Windows aulas Principalmente padrão Windows aulas Somente objetos do navegador
Pausas quando Alterações na ordem de marcação O layout foi reposicionado ou redimensionado. Windows abrir em uma sequência diferente
Melhor usado para controles de grade ou tabela repetidos FormulÔrios de desktop legados com layout fixo Fluxos web com múltiplas janelas, como pop-ups de pagamento.

Como definir o identificador ordinal no repositório de objetos

O identificador ordinal é configurado por classe de objeto de teste e é aplicado automaticamente a todos os objetos dessa classe. UFT aprende posteriormente. Os objetos jÔ existentes no repositório não são atualizados retroativamente.

  1. Abra UFT e selecione Ferramentas > Identificação de Objetos.
  2. Escolha o ambiente, por exemplo, Web ou Padrão. Windows, no menu suspenso Ambiente.
  3. Selecione a classe do objeto de teste que deseja alterar, como WebEdit ou WinButton.
  4. De acordo com o relatório Identificador ordinal Na seção, selecione ƍndice, Localização, Data de Criação ou Nenhum.
  5. Clique OK e reaprender o objeto para que o novo valor ordinal seja capturado.
  6. Abra o Repositório de Objetos, selecione o objeto e confirme se a propriedade ordinal agora aparece na lista de descrição.

Selecionando nenhum Desativa completamente a alternativa para essa classe. UFT Isso resultarÔ em um erro de identificação em vez de um palpite, que geralmente é o comportamento desejado em um conjunto de testes onde uma identificação incorreta silenciosa é mais prejudicial do que uma falha clara. Registre suas expectativas em um documento bem escrito. caso de teste Isso torna essa compensação explícita para toda a equipe.

āš ļø Aviso: Alterar o identificador ordinal de uma classe Ć© uma configuração de nĆ­vel de mĆ”quina, nĆ£o de nĆ­vel de teste. Se nĆ£o for exportado e compartilhado, scripts que funcionam na sua mĆ”quina podem falhar na mĆ”quina de um colega ou no agente de compilação.

Como usar identificadores ordinais em DescriptProgramação iva

Na programação descritiva, não existe uma caixa de diÔlogo de identificação de objetos. O valor ordinal é escrito diretamente na string de descrição, exatamente como qualquer outro nome de propriedade, e é sempre baseado em zero.

' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page
Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank")

objPage.WebEdit("index:=3").Set "9999999999"
Print "Filled WebEdit occurrence #" & (3 + 1)

' Location is counted top to bottom, then left to right
objPage.WebButton("location:=1").Click
Print "Clicked WebButton occurrence #" & (1 + 1)

' CreationTime works only on Browser objects
Print "Switching to browser opened at position #" & (1 + 1)
Browser("creationtime:=1").Sync

SaĆ­da:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

Um padrão mais seguro é combinar propriedades reais com ChildObjects Assim, o valor ordinal é validado antes de ser usado. O exemplo abaixo pressupõe uma pÔgina contendo cinco objetos WebEdit correspondentes e um índice de 9.

Dim oDesc, oChildren, intIndex

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebEdit"
oDesc("html tag").Value = "INPUT"

Set oChildren = objPage.ChildObjects(oDesc)
intIndex = 9

If intIndex < oChildren.Count Then
    oChildren(intIndex).Set "Guru99"
Else
    Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match"
End If

SaĆ­da:

Index 9 is out of range; only 5 objects match

Essa proteção transforma um erro de tempo de execução pouco informativo, como "Não foi possível identificar o objeto", em uma mensagem legível, o que é importante quando os resultados são publicados em um defeito. tracker ou para HP ALM integrado com UFT.

Erros comuns ao usar identificadores ordinais

A maioria dos defeitos relacionados Ć  ordem trace voltamos a um pequeno conjunto de erros recorrentes.

  • Contando a partir de 1. Todo identificador ordinal comeƧa em 0. Escrever `index:=1` para o primeiro campo Ć© o erro mais comum e produz uma falha de Ć­ndice que parece ser um problema de sincronização.
  • Confundir Ć­ndice com localização. O Ć­ndice segue o código-fonte; a localização segue a tela. Em uma pĆ”gina onde o CSS reordena os elementos, os dois valores diferem e sĆ£o trocados.ping Eles silenciosamente visam o controle errado.
  • Utilizando CreationTime fora do ambiente Web. A propriedade existe apenas em objetos do tipo Browser. AplicĆ”-la a um objeto Page, Frame ou Window gera um erro de propriedade nĆ£o suportada.
  • Inserir um valor ordinal diretamente no código de uma função compartilhada. Uma função reutilizĆ”vel que assume index:=2 torna-se inutilizĆ”vel no momento em que uma segunda tela com um layout diferente a chama.
  • Deixar os valores ordinais no repositório após a estabilização da aplicação. Assim que os desenvolvedores adicionarem IDs estĆ”veis, revise os objetos e substitua o ordinal pela nova propriedade.
  • Utilizando nĆŗmeros ordinais dentro de loops sobre grades. Prefere ChildObjects, que retorna uma coleção em tempo real, portanto a contagem reflete a pĆ”gina atual em vez da pĆ”gina registrada.

Recursos

Faça o download das pÔginas da Web utilizadas no tutorial acima para praticar por conta própria.

Os identificadores ordinais são apenas uma pequena parte do modelo de identificação de objetos. Para entender como eles se encaixam no fluxo de trabalho mais amplo, continue com o guia completo. QTP/UFT série de treinamento, revise os fundamentos em teste de softwareAprenda como os resultados são gerenciados no Tutorial HP ALMe comparar estratégias de localização com o Selenium tutorial.

Perguntas Frequentes

O valor padrão varia de acordo com a classe. A maioria dos objetos de teste da Web, como WebEdit e WebButton, têm como padrão o valor Index; os objetos Browser têm como padrão o valor CreationTime; e os objetos Standard. Windows As classes padrão são definidas como Localização. Cada padrão é visível e editÔvel na janela de Identificação de Objetos.

A Identificação Inteligente é executada primeiro. UFT O sistema tenta a descrição aprendida, depois a Identificação Inteligente, se estiver habilitada para a classe, e só recorre ao identificador ordinal quando ambos falharem em produzir um único objeto correspondente.

Sim. Defina o campo "Identificador ordinal" como "Nenhum" para a classe na janela "Identificação de objeto". UFT Em seguida, reporta um erro de identificação em vez de tentar adivinhar, o que é mais seguro para conjuntos de testes onde um clique no objeto errado poderia corromper os dados de teste.

Levemente. UFT Ɖ necessĆ”rio enumerar todos os objetos da classe antes de poder contar atĆ© a posição solicitada, portanto, pĆ”ginas com centenas de controles semelhantes levam mais tempo para serem resolvidas do que uma descrição baseada em um nome ou ID exclusivo.

Sim. Identificação baseada em IA atualmente. UFT Uma versão corresponde aos controles pela aparência visual e pelo texto do rótulo, em vez da posição da marcação, de modo que um campo pode ser localizado pela sua aparência, mesmo quando os valores de índice ao redor mudam.

Um assistente de IA pode analisar um arquivo exportado de um repositório, sinalizar todas as descrições que contenham índice, localização ou data de criação e sugerir substituições com base nos atributos HTML capturados. Mesmo assim, um humano precisa verificar cada sugestão em relação à aplicação em produção antes de confirmÔ-la.

Clique aqui. se o vídeo não estiver acessível

Resuma esta postagem com: