handling web tables frames
No último tutorial do Selenium WebDriver, aprendemos várias comandos Selenium WebDriver usados rotineiramente incluindo tópicos importantes como manipulação de iframe e exceções em scripts Selenium.
Avançando em nosso abrangente série de tutoriais sobre Selenium , neste tutorial, discutiríamos sobre manipulação de tabelas da Web, iframe e elementos dinâmicos que são uma parte essencial de qualquer projeto web.
Este tutorial consiste em 3 tópicos diferentes e seus mecanismos de manipulação em script de selênio.
- Tabelas da web / tabelas HTML
- Molduras
- Elementos dinâmicos
O que você aprenderá:
- # 1) Tabelas da web / tabelas HTML
- # 2) Molduras
- # 3) Elementos dinâmicos
- Conclusão
- Leitura recomendada
# 1) Tabelas da web / tabelas HTML
Neste módulo, aprenderemos sobre as tabelas web ou tabelas HTML em uma página web, tags disponíveis em HTML e como lidar com tabelas web dinamicamente.
As tabelas da Web são basicamente um grupo de elementos armazenados logicamente em um formato de linha e coluna. É usado para organizar informações semelhantes em uma página da web.
Abaixo está um exemplo de tabela Html:
Abaixo está o snippet da estrutura HTML de uma tabela HTML:
As tags abaixo são geralmente definidas em tabelas html:
Tag 1. notable ’define a tabela HTML.
A tag 2.'tbody ’define um contêiner para linhas e colunas.
3.’tr ’define linhas em uma tabela HTML.
4.’td ’/’ th ’define a coluna de uma tabela HTML.
Encontre os detalhes de uma tabela da web:
Existem muitas maneiras de lidar com uma tabela da web.
Devops entrevista perguntas e respostas para experientes
Abordagem # 1 :
Abaixo está o xpath de uma das células da tabela html. Digamos “primeiro nome”
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) define a primeira linha e th (1) define a primeira coluna.
Se várias linhas e colunas são sempre constantes, digamos que nossa tabela HTML sempre terá 5 linhas e 3 colunas.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
Exceto pelo número da linha e da coluna, cada componente do XPath permanece o mesmo. Portanto, você pode iterar usando “for loop” para cada linha e coluna conforme mencionado acima.
Abordagem # 2 :
A primeira abordagem é mais adequada para a mesa que não muda suas dimensões e sempre permanece a mesma. A abordagem acima não será uma solução perfeita para alterar tabelas da web dinamicamente.
Vejamos a tabela HTML acima como exemplo:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Passo 1 : Primeiro, pegue a tabela HTML inteira e armazene-a em uma variável ‘htmltable’ do tipo elemento da web.
Passo 2 : Obtenha todas as linhas com o nome de tag ‘tr’ e armazene todos os elementos em uma lista de elementos da web. Agora todos os elementos com a tag ‘tr’ são armazenados na lista ‘rows’.
etapa 3 : Faça um loop em cada linha e obtenha a lista de elementos com tag 'º'. ‘Rows.get (0)’ dará a primeira linha e ‘FindElements (By.tagName ( 'º' )) ' fornecerá uma lista de colunas para a linha.
Passo 4 : Iterar usando ‘Columns.getsize ()’ e obter os detalhes de cada célula.
Observação : A abordagem acima será mais adequada se as dimensões da mesa mudarem dinamicamente.
Isso conclui o tópico sobre como lidar com tabelas da web em selênio. A seguir, aprenderemos a lidar com um elemento dentro de um quadro.
# 2) Molduras
Nesta seção, aprenderemos sobre os frames em uma página da web e como identificá-los. Além disso, descobriremos como podemos lidar com um quadro no Selenium WebDriver.
Muitos desenvolvedores gostam de colocar elementos dentro de um quadro. O quadro é como um contêiner onde poucos elementos podem ser agrupados.
Identificação de um quadro:
Diferentes maneiras de saber se o elemento está presente dentro de uma moldura ou não
# 1 . Clique com o botão direito no elemento. Verifique se a opção “Este quadro” está disponível. Se esta opção de quadro estiver disponível, significa que o elemento está dentro de um quadro.
# 2 . Visualize o código-fonte da página da web e verifique se alguma tag está disponível para ‘iframe’.
melhor software para monitorar a temperatura da CPU e da GPU

Verifique o número de frames em uma página da web :
Todos os frames estão tendo o nome da tag como “iframe”.
Lista frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
No exemplo acima : frameList terá toda a lista de frames e frameList.size () dará o número de quadros.
Manipulação de um elemento dentro do quadro:
Se um elemento estiver dentro de um quadro, o controle deve alternar para o quadro primeiro e, em seguida, começar a operar nos elementos.
Passo 1 : Para alternar dentro de um quadro:
driver.switchTo (). frame (1); // passe o número do quadro como parâmetro.
ou
driver.switchTo (). frame (“Nome do frame”); // passe o nome do quadro como parâmetro.
ou
driver.switchTo (). frame (“xpath do frame”);
Passo 2 : Depois de alternar dentro de uma moldura, o selênio será capaz de operar nos elementos.
driver.findElement ( // ********************************************);
driver.findElement ( // ********************************************);
Aqui, aprendemos como lidar com um elemento dentro do quadro e, a seguir, abordaremos as diferentes maneiras de lidar com um elemento dinâmico.
# 3) Elementos dinâmicos
Nesta seção, aprenderemos diferentes maneiras de lidar com elementos dinâmicos e construir Xpath genéricos.
Em alguns cenários, os atributos do elemento mudam dinamicamente. Pode ser ‘id’, ’name’ etc.
Exemplo : digamos que 'id' de um campo de nome de usuário seja 'username_123' e o XPath será
// * (@ id = ’username_123 ′) mas quando você abre a página novamente, o campo ‘id’ do campo ‘username’ pode ter mudado e o novo valor pode ser ‘username_234’.
Nesse caso, o teste falhará porque o selênio não conseguiu encontrar o XPath que você passou anteriormente, pois o id do campo mudou para algum outro valor.
Existem muitas abordagens, dependendo do tipo de problema:
Tipo de problema 1: Se parte do valor do atributo mudar .
Exemplo : Como no exemplo acima, o valor do id muda, mas poucos campos permanecem constantes.
‘Username_123’ mudou para ‘username_234’ mas ‘nome de usuário’ sempre permaneceu constante.
como jogar mkv no pc
Você pode construir xpath como abaixo:
driver.findElement (By.xpath ( “// * (contém (@ id, 'nome de usuário'))” )). sendKeys ( 'nome de usuário' );
motorista . findElement (By.xpath ( “// * (começa com (@ id, 'usuário'))” )). sendKeys ( 'nome de usuário' );
'Contém' é um método java que verifica se id contém o nome de usuário da substring.
começa com() verifica se algum atributo começa com “usuário”.
Tipo de problema 2: Se todo o valor do atributo mudar dinamicamente.
Novamente, neste caso, pode haver abordagens diferentes:
Por exemplo : se a id do campo ‘login’ mudar dinamicamente e não houver valor constante para usar o método contém.
Solução : Uso de sendKeys.
Selenium fornece API diferente para usar teclas de função. Por exemplo, tecla tab, digite as teclas, F5 etc.
Passo 1 : Digite a senha
driver.findElement (By.id ( 'senha' )). sendKeys (“senha”));
Passo 2 : Use as funções principais para navegar até o elemento.
driver.findElement (By.id ( 'senha' )). sendKeys (Chaves. DIGITAR ));
ou
driver.findElement (By.id ( 'senha' )). sendKeys (Chaves. ABA ));
Conclusão
As tabelas, frames e elementos dinâmicos da web são parte essencial de qualquer projeto da web. É sempre desejável escrever um código eficaz para lidar com tabelas da web e elementos dinâmicos.
Compreender a construção de XPath genérico que é muito útil ao lidar com elementos dinâmicos. No caso de um quadro, seu script deve alternar o quadro e operar no elemento.
Próximo tutorial nº 19 : No próximo tutorial do Selenium, aprenderemos sobre os tipos de exceções e como lidar com exceções em java em scripts Selenium.
Por favor, poste suas consultas relacionadas a tabelas da Web, frames e manipulação de elementos dinâmicos se você tiver algum
Leitura recomendada
- Como localizar elementos em navegadores Chrome e IE para construir scripts do Selenium - Tutorial do Selenium nº 7
- Uso de Selenium Select Class para lidar com elementos suspensos em uma página da Web - Selenium Tutorial # 13
- Localizadores de selênio: identificar elementos da web usando XPath no selênio (exemplos)
- Como usar o seletor CSS para identificar elementos da Web para scripts do Selenium - Tutorial do Selenium nº 6
- Verifique a visibilidade dos elementos da Web usando vários tipos Comandos do WebDriver - Selenium Tutorial nº 14
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Integração de Selenium com JMeter
- Manipulando iFrames usando o método Selenium WebDriver switchTo ()