Mercury Quick Test Pro máquinas e virtuais: Obras de uma máquina cliente, mas não outra

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma máquina virtual (VMware) com Mercúrio rápida Test Professional 9.2 instalado. Eu tenho um script para testar um aplicativo, escrito em VB.NET usando a biblioteca Infragistics.

Se eu acessar essa máquina virtual usando o meu laptop (usando o Remote Desktop), tudo funciona bem, da conclusão do script sem um problema. Meu laptop é executado XP, com o tema clássico do Windows.

Se eu acessar esta máquina virtual usando uma outra máquina (usando o Remote Desktop), o script começa bem, mas pára no meio, sem nenhuma mensagem de erro a partir de QTP, nada. Esta máquina funciona XP, com o tema clássico do Windows.

Uma diferença entre as duas configurações é o tamanho da tela, o computador portátil é 1920x1280, 1280x1024 outra máquina.

A etapa onde o script pára envolve a verificação de um caixa dentro de uma UltraWinGrid. A caixa em si é exibido, está na tela em ambos os casos.

Alguém já teve esse problema antes, ou tem alguma idéia de por que o comportamento é diferente entre as duas máquinas?

Graças.

Foi útil?

Solução

OK. Eu encontrei o problema. Na verdade, o roteiro foi falhando silenciosamente porque é isso que a pessoa que escreveu o roteiro disse para fazer. Ele não poderia validar algo que era fora da tela, de modo que o script falhou.

O problema foi a definição QTP de 'fora da tela'. Eu tenho duas telas anexadas ao meu laptop, a tela para o próprio laptop (1920x1200) e uma outra tela (1280x1024). I conectar à VM para QTP usando desktop remoto, e ele usa as configurações de tela para o laptop. Isto significa que quando eu lançar meu script QTP, e movê-lo para outra tela, ela não se encaixa, assim que a tela não é maximizada, e o objeto é parcialmente fora da tela, de modo que não pode ser encontrado.

A correção é simples:. Na área de trabalho remota, use a guia Exibir e definir o tamanho da tela para um tamanho de 1280x1024, e não QTP não tem mais nenhum problema

Voilà.

Outras dicas

Se você não estiver usando o modo Expert, e / ou estão permitindo QTP para fazer a maioria do trabalho para criar seus objetos de repositório, então sim ele está referenciando tudo por pixels.

Eu crio todos os meus objetos de repositório de lado, vendo a fonte (no caso de testes de aplicações web automatizado) e usando o objeto Spy para a assistência quando necessário. Eu faço questão de não ter qualquer informação de posicionamento como parte da minha definição de objeto, pela simples razão de que você está executando no.

Para as partes do meu web-app que interagiram com o Windows (abrindo um arquivo para upload, etc.) do objeto Spy foi essencial para a tentativa e erro necessária para criar um identificador único para criar o objeto repositório. Mas isso pode ser feito.

Ex1: Arquivo Navegar diálogo
text = "Escolher arquivo"
nativeclass = # 32770 (aparentemente algumas janelas VooDoo para um diálogo aberto arquivo?)

Ex2: Nome do arquivo caixa de texto na caixa de diálogo Browse:
nativeclass = "Editar"
anexado texto "File & name:" (? mais o Windows VooDoo Ele woudn't trabalho para mim sem o "&")

Ex3: Botão Abrir na caixa de diálogo:
text = "& Abrir"
classe de objeto = "Button"

Boa sorte!

Ponto de esclarecimento: Você mencionou que QTP pára com nenhuma mensagem de erro. Isso também significa que registrar os resultados do teste de arquivo também tem nenhuma mensagem de erro? Se o log tem alguma informação, que pode ser útil para diagnosticar o problema. Você poderia compartilhar as linhas de código no ponto onde o script falhar?

Além disso, desktop remoto irá redimensionar a área de trabalho na máquina remota. Embora scripts de QTP não são inerentemente coordenada base, as demonstrações individuais podem ser coordenadas com base em relação a um objeto. A resolução pode ser um problema a esse respeito. Por exemplo, imagine que você tinha uma linha como Button.Click (5, 150) gravado em uma máquina de resolução mais alta. Mas se você tentou reproduzi-lo em uma máquina de resolução mais baixa, eo 150 está fora dos limites do objeto sobre a resolução mais baixa, isso poderia causar um problema.

QTP faz não coordenadas de tela uso, exceto como último recurso, se os objetos são identificados como objetos de alto nível (SwfTable neste caso) que você deve estar OK, se no entanto QTP não reconhece a objeto que cai de volta para WinObject e tela coordenadas.

Se você estiver usando Infragistics então você deve saber que eles estender o suporte de QTP com a sua TestAdvantage produto que provavelmente irá resolver o seu problema.


Editar: @ MatthieuF disse:

Na verdade, usamos os Infragistics plugins para QTP, e ainda temos o problema

Você pode me dar um exemplo de uma linha que falha?

Algumas coisas:

Você deve ser capaz de depuração no VM facilmente - só esperar para ele parar, entrar em seu repositório de objetos, e ver se ele pode identificar o objeto. Se não, então espião uso objeto para descobrir o que as propriedades são diferentes entre os sistemas operacionais. Se houver uma diferença, então você sempre pode definir essa propriedade para uma expressão regular e tê-lo verificar para ambas as possibilidades.
Assumindo que não é o problema que temos correr em problemas usando desktop remoto com QTP se a janela remota é fechada ou minimizada. Para nós, foi uma questão na qual a área de transferência não pode ser alterado quando uma janela RDP não é visível, mas poderia haver outras surpresas ao usar QTP dessa forma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top