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!
Como popular a base de dados de maneira rápida e fácil?
22 horas atrás


4 comentários:
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.
Você poderia me ajudar?
Sabes como realizar um drop table via TestComplete?
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)
Podes me mandar essa questão por email?
Assim que puder te respondo com mais calma.
luizgustavo@lugati.com.br
Postar um comentário