quarta-feira, 23 de fevereiro de 2011

TestComplete - Parâmetro trazendo valor incorreto

Estou escrevendo esse post para dividir a minha incomodação das últimas horas.

Estou desenvolvendo um método que, dentre outras coisas, eu defino no filtro a Data Início e a Data Fim.

Desta forma:
function ID010 (DataInicio, DataFim, Matricula)
{
//Informar Data de Início e Data Fim
Aliases.ie7.Page.Main.TelaABC.txtDataInicio.Text = DataInicio;
Aliases.ie7.Page.Main.TelaABC.txtDataFim.Text = DataFim;
...
}

Todavia, o campo Data Início estava com um comportamento muito estranho, toda vez que eu executava a função ID010, ele não trazia o valor correto definido no parâmetro.

Tal como:
ID010 (01112010, 31112010, 123123);

Ou seja, a Data Início definida no parâmetro era: 01/11/2010
E a Data Fim definida no parâmetro era: 30/11/2010

Durante a execução dessa função, a Data Início carregada na Aplicação (após execução do Script) variava (como por exemplo, 824328 ou 300040), e a Data Fim carregada na Aplicação (após execução do Script) estava OK, conforme previsto: 30/11/2010.

Fiz uma série de análises:
- Refiz o mapeamento;
- Já utilizei um método específico para definição de datas (utilizei um dos seus como parâmetro conforme a seguir):
function preencheDataInicio(valor)
{
aguardaCarregar();
if (aqString.Compare(valor, "__/__/____", false) == 0)
Aliases.ie7.Page.Main.TelaABC.txtDataFim.Keys("[Del][Del][Del][Del][Del][Del][Del][Del]");
else
{
valor = aqString.Replace(valor, "/", "");
Aliases.ie7.Page.Main.TelaABC.txtDataFim.Keys(valor);
}
}
- Já utilizei .Keys(valor) ao invés de .Text
- Já coloquei focus() e Click() no campo (apesar de não ter nada a ver);
- E quaisquer outras funções que possam referenciar ou limpar o conteúdo do campo antes de inseri-lo.
- Já tentei até fazer uma gambiarra: clicar em Consultar, dar erro (campo obrigatório) e setar o valor no campo novamente, mas o script insiste em setar o mesmo valor no campo.
- Inclusive, coloquei como primeira linha do script, trazer o valor do parâmetro e jogar num Log.Message(DataInicio). Mesmo problema;

O curioso é que eu tentei fazer o mesmo com a data 31102010 e o valor retornou corretamente. Tentei com a data 02112010 e 03112010 e deu o mesmo problema. Parece que esse campo retorna scriptado ou algo do tipo.

Fui almoçar, esfriei a cabeça e voltei. Quando vi a solução era mais simples do que eu pensava. Era só passar a data como String, talvez o Javascript (linguagem utilizada para scriptação) não estava processando corretamente esse valor.

A solução era:
ID010 ("01112010", "31112010", 123123);

Por isso eu digo, quando estiverem batendo a cabeça num problema. Tomem um ar, respirem fundo e pensem fora do quadrado. Garanto que vai ajudar!

4 comentários:

Walmyr Lima e Silva Filho disse...

Olá Gustavo!

Trabalho com automação utilizando o Test Complete e estou tendo certa dificuldade em alguns testes na camada de banco de dados.
Temos um base Sybase e preciso executar algumas stored procedures.
Para um dos meus testes dropo e crio tabelas temporárias, porém, estou tendo problemas para fazer este drop via Test Complete.

Walmyr Lima e Silva Filho disse...

Você poderia me ajudar?
Sabes como realizar um drop table via TestComplete?

Walmyr Lima e Silva Filho disse...

No exemplo abaixo parece que o TestComplete não interpreta que dropei a tabela, pois, acusa erro de que a tabela já existe (no momento do segundo create table)

create table #temp (cd_temp int)
drop table #temp
create table #temp (cd_temp int)

Luiz Gustavo S. Vieira disse...

Podes me mandar essa questão por email?
Assim que puder te respondo com mais calma.
luizgustavo@lugati.com.br

 

My site is worth$4,271.36Your website value?