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.

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.
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:
- Baseado em Ćndice
- Com base na localização
- 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.
- Abra UFT e selecione Ferramentas > Identificação de Objetos.
- Escolha o ambiente, por exemplo, Web ou Padrão. Windows, no menu suspenso Ambiente.
- Selecione a classe do objeto de teste que deseja alterar, como WebEdit ou WinButton.
- De acordo com o relatório Identificador ordinal Na seção, selecione Ćndice, Localização, Data de Criação ou Nenhum.
- Clique OK e reaprender o objeto para que o novo valor ordinal seja capturado.
- 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
Clique aqui. se o vĆdeo nĆ£o estiver acessĆvel

