Há momentos em que precisamos acessar elementos (geralmente textos) que estão dentro de tabelas HTML. No entanto, é muito raro um web designer fornecer um atributo id ou name a uma determinada célula da tabela. Portanto, não podemos usar os métodos usuais, como "By.id ()", "By.name ()" ou "By.cssSelector ()". Neste caso, a opção mais confiável é acessá-los usando o método "By.xpath ()".
Neste Tutorial, você aprenderá-
Como escrever XPath para Tabela
Acessando tabelas aninhadas
Usando atributos como predicados
Atalho: Use Inspecionar Elemento para Acessar Tabelas no Selenium
Como escrever XPath para Tabela
Considere o código HTML abaixo.
Usaremos XPath para obter o texto interno da célula que contém o texto "quarta célula".
Etapa 1 - definir o elemento pai (tabela)
Os localizadores XPath no WebDriver sempre começam com uma barra dupla "//" e, em seguida, são seguidos pelo elemento pai . Como estamos lidando com tabelas, o elemento pai deve ser sempre a tag
. A primeira parte do nosso localizador XPath deve, portanto, começar com "// tabela".
Etapa 2 - Adicionar os elementos filhos
O elemento imediatamente abaixo de
é
, então podemos dizer que
é o "filho" de
. E também,
é o "pai" de
. Todos os elementos filho no XPath são colocados à direita de seu elemento pai, separados por uma barra "/" como o código mostrado abaixo.
Etapa 3 - Adicionar Predicados
O elemento
contém duas tags
. Agora podemos dizer que essas duas tags
são "filhas" de
. Consequentemente, podemos dizer que
é o pai de ambos os elementos
.
Outra coisa que podemos concluir é que os dois elementos
são irmãos. Irmãos referem-se a elementos filhos que têm o mesmo pai .
Para chegar ao
que desejamos acessar (aquele com o texto "quarta célula"), devemos primeiro acessar o segundo
e não o primeiro. Se simplesmente escrevermos "// table / tbody / tr", estaremos acessando a primeira tag
.
Então, como acessamos o segundo
então? A resposta para isso é usar Predicados .
Predicados são números ou atributos HTML entre um par de colchetes "[]" que distinguem um elemento filho de seus irmãos . Como o
que precisamos acessar é o segundo, usaremos "[2]" como o predicado.
Se não usarmos nenhum predicado, o XPath acessará o primeiro irmão. Portanto, podemos acessar o primeiro
usando qualquer um desses códigos XPath.
Etapa 4 - Adicionar os elementos filhos sucessores usando os predicados apropriados
O próximo elemento que precisamos acessar é o segundo
. Aplicando os princípios que aprendemos nas etapas 2 e 3, finalizaremos nosso código XPath para ser como o mostrado abaixo.
Agora que temos o localizador XPath correto, já podemos acessar a célula que desejamos e obter seu texto interno usando o código abaixo. Ele assume que você salvou o código HTML acima como "newhtml.html" em sua unidade C.
Os mesmos princípios discutidos acima se aplicam a tabelas aninhadas. As tabelas aninhadas são tabelas localizadas em outra tabela . Um exemplo é mostrado abaixo.
Para acessar a célula com o texto "4-5-6" usando os conceitos "// pai / filho" e predicado da seção anterior, devemos ser capazes de criar o código XPath abaixo.
O código WebDriver abaixo deve ser capaz de recuperar o texto interno da célula que estamos acessando.
A saída abaixo confirma que a tabela interna foi acessada com sucesso.
Usando atributos como predicados
Se o elemento for escrito profundamente no código HTML de forma que o número a ser usado para o predicado seja muito difícil de determinar, podemos usar o atributo exclusivo desse elemento.
No exemplo abaixo, a célula "New York to Chicago" está localizada no código HTML da página inicial da Mercury Tours.
Nesse caso, podemos usar o atributo exclusivo da tabela (largura = "270") como o predicado. Os atributos são usados como predicados, prefixando-os com o símbolo @ . No exemplo acima, a célula "New York to Chicago" está localizada no primeiro
do quarto
e, portanto, nosso XPath deve ser conforme mostrado abaixo.
Lembre-se de que quando colocamos o código XPath em Java, devemos usar o caractere de escape barra invertida "\" para as aspas duplas em ambos os lados de "270" para que o argumento de string de By.xpath () não seja encerrado prematuramente .
Agora estamos prontos para acessar essa célula usando o código abaixo.
Atalho: Use Inspecionar Elemento para Acessar Tabelas no Selenium
Se o número ou atributo de um elemento for extremamente difícil ou impossível de obter, a maneira mais rápida de gerar o código XPath é usando Inspecionar Elemento.
Considere o exemplo abaixo da página inicial da Mercury Tours.
Passo 1
Use o Firebug para obter o código XPath.
Passo 2
Procure o primeiro elemento pai "tabela" e exclua tudo à esquerda dele.
etapa 3
Prefixe a parte restante do código com barra dupla "//" e copie-o para o código do WebDriver.
O código WebDriver abaixo será capaz de recuperar com sucesso o texto interno do elemento que estamos acessando.
By.xpath () é comumente usado para acessar os elementos da tabela.
Se o elemento for escrito profundamente no código HTML de forma que o número a ser usado para o predicado seja muito difícil de determinar, podemos usar o atributo exclusivo desse elemento.
Os atributos são usados como predicados, prefixando-os com o símbolo @.
Use Inspecionar elemento para acessar tabelas no Selenium