Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Rational  >

Usando o IBM Rational Functional Tester para trabalhar com objetos agrupados em células de tabela HTML

developerWorks
Opções de documento

Opções de documento que necessitam de JavaScript não são exibidas

Código de amostra


Classificar esta página

Ajude-nos a melhorar este conteúdo


Nível: Introdutório

Prakash Dewan, Systems Software Engineer, IBM

25/Jun/2009

Este artigo vai mostrar a você como usar o IBM Rational Functional Tester para automatizar objetos agrupados dentro de células de tabela HTML mantendo as células especificadas para referência. Vai ajudar você a automatizar as operações relacionadas a esses objetos.

Estrutura da tabela HTML e objetos incluídos

Uma tabela HTML é uma coleção de várias tags <TR> (table row). Cada tag <TR> contém múltiplas tags <TD> (table definition), cada uma das quais corresponde a uma célula. Todas essas tags <TR> e <TD>, juntas, podem ser incluídas em uma tag <TBODY> (table body). A Figura 1 mostra essa estrutura.


Figura 1. Estrutura de tags da tabela HTML
<TABLE>, <TBODY>, <TR>, and <TD> tags

As tabelas HTML são parte integrante dos aplicativos da Web e variam de estruturas simples a complexas. Elas podem conter objetos dentro de suas células, como campos de texto, caixas de seleção, botões de opções, botões de apertar, imagens, listas selecionadas, e assim por diante, como mostrado na Figura 2.


Figura 2. Objetos incluídos nas células da tabela HTML
table with columns showing referenced elements

Se você examinar o código de origem da página da Web apresentada na Figura 2, cada objeto está encerrado entre as tags de abertura (<TD>) e fechamento (</TD>), em outras palavras, incluído na célula da tabela.



Voltar para parte superior


Identificando os objetos incluídos

Por padrão, o recurso IBM® Rational® Functional Tester Test Object Inspector identifica um campo de texto que incluído em uma célula da tabela, com a hierarquia-pai, como mostrado na Figura 3. O campo de texto não terá nenhuma referência à célula de tabela que o encerra e será mostrado como filho direto da tabela HTML.


Figura 3. Hierarquia-pai padrão
Test Object Inspector view

Por padrão, não é possível ver os objetos das classes Html.TBODY, Html.TR e Html.TD, porque elas não são objetos mapeáveis para RFT. É possível vê-los na hierarquia de objeto selecionando Opções e desmarcando a opção Ocultar não mapeáveis (veja a Figura 4).


Figura 4. Desmarcar a opção “Ocultar não mapeáveis”
menu options

Depois de desmarcada essa opção, o Test Object Inspector identificará um campo de texto incluído em uma célula da tabela HTML como filho do objeto de classe TD, em vez de identificar a tabela HTML diretamente (Figura 5).


Figura 5. Objeto incluído como filho do elemento TD
new elements shown: Not Mapped TD, TR, and TBODY

No Rational Functional Tester, trabalhar com os objetos incluídos nas células da tabela relativas à linha e à coluna (ou seja, à célula da tabela) não é tão simples quanto trabalhar com esses objetos sem nenhuma referência à célula.



Voltar para parte superior


Operações nos objetos incluídos com referência a células da tabela

É possível executar inúmeras ações ou operações nos objetos encerrados em uma célula da tabela HTML. Durante a automação, você pode encontrar oportunidades frequentes para automatizar cenários envolvendo operações em objetos contidos em células de tabela HTML com referência a linha e coluna (ou seja, célula).

Essas operações incluem estes exemplos:

  • Determinar o valor de um campo de texto na Linha 3, Coluna 4, ou Célula(3, 4), de uma tabela HTML
  • Selecionar uma opção em uma caixa de listagem na Linha 5, Coluna 2, ou Célula(5, 2)
  • Clicar em um botão de opções na célula de tabela especificada
  • Determinar o estado de uma caixa de opção (por exemplo, marcada ou não) em uma célula de tabela especificada
  • Clicar em um botão ou imagem em uma célula de tabela especificada

Além de executar essas ações nos objetos, é possível aplicar a mesma solução para extrair ou gerar a saída das propriedades do objeto. Também é possível implementar verificação de estado e propriedades de objeto.



Voltar para parte superior


Solução em três etapas

Há três etapas necessárias para automatizar as operações nos objetos encerrados nas células da tabela HTML usando o Rational Functional Tester:

  1. Localizar e determinar o objeto de uma célula de tabela HTML usando o método find(), baseado em índices de linha e coluna.
  2. Usar o objeto de célula, localizar o objeto incluído sobre o qual se deve executar a ação (por exemplo, caixa de texto, botão, e assim por diante).
  3. Executar a ação necessária (por exemplo, clicar, selecionar, extrair propriedade, e assim por diante) no objeto.

As etapas a seguir mostram como essa solução em três etapas funciona. Este exemplo determina o valor de uma caixa de texto incluída em uma célula da tabela.

Passo 1. Localizar um objeto de uma célula da tabela HTML

Supondo que tableObj é o objeto da tabela HTML da classe TestObject, use um código semelhante ao apresentado na Listagem 1.


Listagem 1. Localizar uma célula da tabela HTML
TestObject cellObj = tableObj.find(atList(
                    atChild(".class" , "Html.TBODY"),
                    atChild(".class" , "Html.TR",".rowIndex", rowIndex),
                    atChild(".class" , "Html.TD",".cellIndex",colIndex)
                    ), false)[0];

Este código emprega a capacidade do método find() junto com os métodos atList() e atChild() para obter um objeto de uma célula da tabela HTML especificado pelos índices de linhas e colunas. O segundo parâmetro com o valor false especifica que o objeto que você está localizando não é um objeto mapeável.

Passo 2. Localizar o objeto incluído na célula

Para obter um objeto incluído em uma célula da tabela (por exemplo, uma caixa de texto), use um código semelhante ao apresentado na Listagem 2.


Listagem 2. Localizar um objeto incluído
TestObject cellTxtObj = cellObj.find(atDescendant(".class","Html.INPUT.text"))[0];

Se houver mais de um objeto do mesmo tipo em uma célula (por exemplo, duas ou mais caixas de texto na mesma célula), use o índice de classe para identificar o objeto necessário. Partindo da premissa que objIndex é o índice da classe do objeto em que você está interessado na célula, é possível obter o objeto por meio da abordagem mostrada na Listagem 3.


Listagem 3. Identificar o objeto
TestObject cellTxtObj = cellObj.find(atDescendant(".class","Html.INPUT.text"))[objIndex];

Passo 3. Executar as ações no objeto incluído

Quando o método find() no Passo 2 retorna um TestObject, é necessário atribuí-lo a uma classe que seja relevante ao objeto de modo que seja possível executar as ações necessárias. Na Listagem 4, cellTxtObj é categorizado como TextGuiTestObject para executar o método setText().


Listagem 4. Atribuir um objeto a uma classe
((TextGuiTestObject)cellTxtObj).setText(txtValue);



Voltar para parte superior


A solução para localizar e configurar os objetos HTML

Você pode usar a implementação que a Listagem 5 mostra para localizar quaisquer objetos HTML incluídos em uma célula da tabela HTML. Depois da localização e configuração dos objetos, execute neles quaisquer operações que sejam necessárias.


Listagem 5. Código de solução
/* Este método retornará um objeto da classe HTML especificado, dentro de uma
célula da tabela
 * @return TestObject: Objeto do elemento de HTML quebrado ou nulo (caso o objeto
não seja encontrado)
 * @param tableObj: to objeto da tabela da web de interesse
 * @param rowIndex: o índice da linha da célula de interesse (começando do 0)
 * @param colIndex: o índice da coluna da céluola de interessel (começando do 0)
 * @param htmlClass: a classe de HTML do objeto quebrado na célula
 * @param classIndex: a classe de HTML do objeto quebrado na célula
 */

public TestObject childObject(TestObject tableObj, int rowIndex, int colIndex, 
String htmlClass, int classIndex)
        {
        TestObject cellObj = tableObj.find(atList(
                            atChild(".class" , "HTML.TBODY"), 
                            atChild(".class" , "HTML.TR",".rowIndex", rowIndex),
                            atChild(".class" , "HTML.TD",".cellIndex",colIndex)
                                      ), false)[0];
        TestObject []wrappedObj = cellObj.find(atChild(".class",htmlClass));
        
        if(wrappedObj.length < classIndex + 1)
              return null;
        else	
              return wrappedObj[classIndex];
        }

Exemplos de uso

Os exemplos a seguir (Listagens 6-8) partem da premissa que hTable é um objeto de uma classe que tem o método childObject() definido.


Listagem 6. Selecionando uma caixa de opção na Célula(4,4)
TestObject cellCheckboxObj = hTable.childObject(tableObj,4,4,"Html.INPUT.checkbox",0);
((ToggleGUITestObject)cellCheckboxObj).setState(SELECTED);


Listagem 7. Clicando no segundo botão (por exemplo, classIndex 1) na Célula(5,6)
TestObject cellBtnObj = hTable.childObject(tableObj, 5, 6, "Html.INPUT.button", 1);
((GuiTestObject)cellBtnObj).click();


Listagem 8. Extraindo a propriedade do valor de uma caixa de texto incluída na Célula(2,2)
TestObject cellTxtObj = hTable.childObject(tableObj, 2, 2, "Html.INPUT.text", 0);
String textBoxValue = cellTxtObj.getProperty(".value").toString();



Voltar para parte superior


Trabalhando com arquivos de amostra

  1. Faça download do arquivo developerWorks.zip, que é o projeto de amostra do Rational Functional Tester. (Consulte Downloads).
  2. Extraia o arquivo compactado na pasta developerWorks.
  3. Abra o Rational Functional Tester, selecione Arquivo > Conectar-se ao Projeto de Teste Funcional, navegar até a pasta do developerWorks e clique em Concluir. O projeto de teste funcional será aberto no Rational Functional Tester.
  4. Faça o download e extraia o arquivo SampleHtmlTable.zip, que tem a página da Web de amostra com uma tabela HTML complexa, como mostrado na Figura 2.
  5. Abra o arquivo dWSample.html no Microsoft Internet Explorer®.
  6. No Rational Functional Tester, execute dWExample.java em dWSample.html.


Voltar para parte superior


O que você aprendeu

Este artigo demonstrou uma abordagem para automatizar os objetos encerrados em uma célula da tabela HTML usando o IBM Rational Functional Tester. Essa abordagem inclui executar ações diferentes nesses objetos e extrair propriedades de objeto que você pode usar para implementar pontos de verificação que você pode definir. É possível usar essa técnica como base para desenvolver soluções aplicáveis às tabelas HTML mais complexas.




Voltar para parte superior


Downloads

DescriçãoNomeTamanhoMétodo de download
Sample ApplicationSampleHtmlTable.zip2KBHTTP
Sample Rational Functional Tester ProjectdeveloperWorks.zip5KBHTTP
Informações sobre métodos de download


Recursos

Aprender
  • Aprenda sobre outros aplicativos na IBM Rational Software Delivery Platform, incluindo ferramentas de colaboração para desenvolvimento paralelo e equipes geograficamente dispersas, além de software especializado para gerenciamento de arquitetura, gerenciamento de ativos, gerenciamento de mudança e release, gerenciamento de requisitos integrados, gerenciamento de processo e portfólio, e gerenciamento de qualidade.

  • Visite a Área de software Rational em developerWorks para obter os recursos técnicos e melhores práticas para produtos Rational Software Delivery Plafform.

  • Explore Cursos on-line de Rational baseados em computador, baseados na Web e conduzidos por instrutor. Aprimore suas habilidades e aprenda mais sobre as ferramentas Rational com esses cursos, que vão de introdutório a avançado. Os cursos desse catálogo estão disponíveis para compra de treinamento baseado em computador ou baseado na Web. Além disso, alguns cursos de "Introdução" estão disponíveis sem custo.

  • Assine a newsletter Rational Edge para receber artigos sobre os conceitos por trás do desenvolvimento eficiente de software.

  • Assine a newsletter IBM developerWorks, atualizada semanalmente para receber os melhores tutoriais, artigos, downloads, atividades de comunidade, webcasts e eventos sobre developerWorks.

  • Navegue até a livraria de tecnologia para ver livros sobre estes e outros tópicos técnicos.

  • Explore a página do produto Rational Functional Tester para localizar conteúdo e recursos técnicos para o IBM® Rational® Functional Tester.

  • Novos recursos tornam mais fácil do que nunca testar mais aplicativos usando uma única ferramenta de testes. Para explorá-la, visite Novidades do IBM Rational Functional Tester Versão 8.0


Obter produtos e tecnologias

Discutir


Sobre o autor

photo of Prakash Dewan

Prakash Dewan é membro da equipe de engenharia IBM Cognos nos IBM Software Labs, em Pune, Índia. Além de seus testes de automação usando o Rational Functional Tester, ele trabalha na verificação e validação de vários recursos e funções do produto. Prakash tem mestrado em Aplicativos de Computador e tem grande habilidade em desenvolver estruturas de automação. Ele também tem muita experiência em treinamento de tópicos avançados de testes e contribuiu para vários artigos da base de conhecimento.




Avalie esta página


Reserve um instante para completar este formulário para nos ajudar a servi-lo melhor.



 


 


Não
são úteis
Extremamente
úteis
 





IBM, Rational e o logotipo da IBM são marcas registradas da International Business Machines Corporation nos Estados Unidos e/ou em outros países. Java e todas as marcas registradas e logotipos baseados em Java são marcas registradas da Sun Microsystems, Inc. nos Estados Unidos e/ou em outros países. Outros nomes de empresas, produtos e serviços podem ser marcas registradas ou marcas de serviço de terceiros.