Como usar o Selenium IDE com Scripts & Comandos (Assert, Verify)

Índice:

Anonim

Usaremos o site da Mercury Tours como nosso aplicativo da web em teste. É um sistema de reserva de voos online que contém todos os elementos de que precisamos para este tutorial. Seu URL é http://demo.guru99.com/test/newtours/, e este será nosso URL base.

Criar um script por gravação

Vamos agora criar nosso primeiro script de teste no Selenium IDE usando o método mais comum - por gravação. Posteriormente, executaremos nosso script usando o recurso de reprodução.

Passo 1

  • Abra o Firefox e o Selenium IDE.
  • Digite o valor do nosso URL básico: http://demo.guru99.com/test/newtours/.
  • Ative o botão Gravar (se ainda não estiver ativado por padrão).
Passo 2

No Firefox, navegue até http://demo.guru99.com/test/newtours/. O Firefox deve levá-lo para uma página semelhante à mostrada abaixo.

etapa 3
  • Clique com o botão direito em qualquer espaço em branco da página, como no logotipo da Mercury Tours no canto superior esquerdo. Isso abrirá o menu de contexto do Selenium IDE. Nota: Não clique em nenhum objeto ou imagem com hiperlink
  • Selecione a opção "Mostrar comandos disponíveis".
  • Em seguida, selecione "assertTitle exact: Welcome: Mercury Tours." Este é um comando que garante que o título da página está correto.
Passo 4
  • Na caixa de texto "Nome do usuário" da Mercury Tours, digite um nome de usuário inválido, "invalidUNN".
  • Na caixa de texto "Senha", digite uma senha inválida, "invalidPWD".
Etapa 5
  • Clique no botão "Sign-In". O Firefox deve levá-lo a esta página.
Etapa 6

Desative o botão de gravação para interromper a gravação. Seu script agora deve ser semelhante ao mostrado abaixo.

Etapa 7

Agora que concluímos nosso script de teste, devemos salvá-lo em um caso de teste. No menu Arquivo, selecione "Salvar caso de teste". Como alternativa, você pode simplesmente pressionar Ctrl + S.

Etapa 8
  • Escolha o local desejado e nomeie o caso de teste como "Invalid_login".
  • Clique no botão "Salvar".
Etapa 9.

Observe que o arquivo foi salvo como HTML.

Etapa 10.

Volte para o Selenium IDE e clique no botão Playback para executar todo o script. O Selenium IDE deve ser capaz de replicar tudo perfeitamente.

Introdução aos Comandos do Selênio - Selenês

  • Os comandos Selenese podem ter no máximo dois parâmetros: destino e valor.
  • Os parâmetros não são obrigatórios o tempo todo. Depende de quantos o comando precisará.

3 tipos de comandos

Ações

Esses são comandos que interagem diretamente com os elementos da página.

Exemplo: o comando "clicar" é uma ação porque você interage diretamente com o elemento em que está clicando.

O comando "digitar" também é uma ação porque você está colocando valores em uma caixa de texto, e a caixa de texto os mostra a você em troca. Há uma interação bidirecional entre você e a caixa de texto.

Acessores

Eles são comandos que permitem armazenar valores em uma variável.

Exemplo: o comando "storeTitle" é um acessador porque apenas "lê" o título da página e o salva em uma variável. Ele não interage com nenhum elemento da página.

Afirmações

São comandos que verificam se uma determinada condição é atendida.

3 tipos de afirmações

  • Assert . Quando um comando "assert" falha, o teste é interrompido imediatamente.
  • Verifique . Quando um comando "verificar" falha, o Selenium IDE registra essa falha e continua com a execução do teste.
  • WaitFor . Antes de prosseguir para o próximo comando, os comandos "waitFor" irão primeiro esperar que uma determinada condição se torne verdadeira.
    • Se a condição se tornar verdadeira dentro do período de espera, a etapa será aprovada.
    • Se a condição não se tornar verdadeira, a etapa falhará. A falha é registrada e a execução do teste prossegue para o próximo comando.
    • Por padrão, o valor do tempo limite é definido como 30 segundos. Você pode alterar isso na caixa de diálogo Selenium IDE Options na guia General.

Assert vs. Verify

Comandos Comuns

Comando Número de Parâmetros Descrição
abrir 0 - 2

Abre uma página usando um URL.

click / clickAndWait 1

Clica em um elemento especificado.

type / typeKeys 2

Digita uma sequência de caracteres.

verifyTitle / assertTitle 1

Compara o título da página real com um valor esperado.

verifyTextPresent 1

Verifica se um determinado texto é encontrado na página.

verifyElementPresent 1

Verifica a presença de um determinado elemento.

verifyTable 2

Compara o conteúdo de uma tabela com os valores esperados.

waitForPageToLoad 1

Pausa a execução até que a página seja completamente carregada.

waitForElementPresent 1

Pausa a execução até que o elemento especificado se torne presente.

Crie um script manualmente com o Firebug

Agora, vamos recriar o mesmo caso de teste manualmente, digitando os comandos. Desta vez, precisaremos usar o Firebug.

Passo 1
  • Abra o Firefox e o Selenium IDE.
  • Digite o URL base (http://demo.guru99.com/test/newtours/).
  • O botão de gravação deve estar DESLIGADO.
Etapa 2: Clique na linha em branco superior no Editor.

Digite "abrir" na caixa de texto Comando e pressione Enter.

etapa 3
  • Navegue no Firefox até o nosso URL base e ative o Firebug
  • No painel Selenium IDE Editor, selecione a segunda linha (a linha abaixo do comando "abrir") e crie o segundo comando digitando "assertTitle" na caixa Comando.
  • Sinta-se à vontade para usar o recurso de preenchimento automático.
Passo 4
  • No Firebug, expanda a tag para exibir a tag .</li> <li>Clique no valor da tag <title> (que é "Bem-vindo: Mercury Tours") e cole-o no campo Destino no Editor.</li> </ul> </td> </tr> <tr> <td><strong>Etapa 5</strong> <ul> <li>Para criar o terceiro comando, clique na terceira linha em branco no Editor e digite "digite" na caixa de texto Comando.</li> <li>No Firebug, clique no botão "Inspecionar".</li> </ul> </td> </tr> <tr> <td>Clique na caixa de texto Nome do usuário. Observe que o Firebug mostra automaticamente o código HTML desse elemento.</td> </tr> <tr> <td><strong>Etapa 6</strong> <p>Observe que a caixa de texto Nome do usuário não possui um ID, mas possui um atributo NAME. Devemos, portanto, usar seu NOME como o localizador. Copie o valor NAME e cole-o no campo Destino no Selenium IDE.</p> <p>Ainda na caixa de texto Destino, prefixe "userName" com "name =", indicando que o Selenium IDE deve ter como alvo um elemento cujo atributo NAME é "userName".</p> <p>Digite "invalidUN" na caixa de texto Valor do Selenium IDE. Seu script de teste agora deve ser semelhante à imagem abaixo. Terminamos o terceiro comando. Nota: Em vez de invalidUN, você pode inserir qualquer outra string de texto. Mas o Selenium IDE diferencia maiúsculas de minúsculas e você digita valores / atributos exatamente como no aplicativo.</p> </td> </tr> <tr> <td><strong>Etapa 7</strong> <ul> <li>Para criar o quarto comando, digite "digite" na caixa de texto Comando.</li> <li>Novamente, use o botão "Inspecionar" do Firebug para obter o localizador da caixa de texto "Senha".</li> </ul> <ul> <li> <p>Cole o atributo NAME ("senha") no campo Destino e prefixe-o com "nome ="</p> </li> <li> <p>Digite "invalidPW" no campo Valor no Selenium IDE. Seu script de teste agora deve ser semelhante à imagem abaixo.</p> </li> </ul> </td> </tr> <tr> <td><strong>Etapa 8</strong> <ul> <li>Para o quinto comando, digite "clickAndWait" na caixa de texto Comando no Selenium IDE.</li> <li>Use o botão "Inspecionar" do Firebug para obter o localizador do botão "Entrar".</li> </ul> <ul> <li>Cole o valor do atributo NAME ("login") na caixa de texto Destino e prefixe-o com "name =".</li> <li>Seu script de teste agora deve ser semelhante à imagem abaixo.</li> </ul> </td> </tr> </tbody> </table> <p><strong>Etapa 9:</strong> Salve o caso de teste da mesma maneira que fizemos na seção anterior.</p> <a id="menu-6"></a> <h2>Usando o botão Localizar</h2> <p><strong>O botão Localizar no Selenium IDE é usado para verificar se o que colocamos na caixa de texto Destino é de fato o elemento de IU correto.</strong></p> <p>Vamos usar o caso de teste Invalid_login que criamos nas seções anteriores. Clique em qualquer comando com uma entrada de destino, digamos, o terceiro comando.</p> <p>Clique no botão Encontrar. Observe que a caixa de texto Nome do usuário na página Mercury Tours fica destacada por um segundo.</p> <p>Isso indica que o Selenium IDE foi capaz de detectar e acessar o elemento esperado corretamente. Se o botão Localizar realçar um elemento diferente ou nenhum elemento, então deve haver algo errado com seu script.</p> <a id="menu-7"></a> <h2>Executar Comando</h2> <p><strong>Isso permite que você execute qualquer comando único sem executar todo o caso de teste</strong> . Basta clicar na linha que deseja executar e, em seguida, clicar em "Ações> Executar este comando" na barra de menus ou simplesmente pressionar "X" no teclado.</p> <p><strong>Etapa 1.</strong> Certifique-se de que seu navegador esteja na página inicial da Mercury Tours. Clique no comando que deseja executar. Neste exemplo, clique na linha "type | userName | invalidUN".</p> <p><strong>Etapa 2.</strong> Pressione "X" no teclado.</p> <p><strong>Etapa 3.</strong> Observe que a caixa de texto do nome de usuário é preenchida com o texto "invalidUN"</p> <p><strong>A execução de comandos dessa maneira depende muito da página que o Firefox está exibindo no momento</strong> . Isso significa que se você tentar o exemplo acima com a página inicial do Google exibida em vez de Mercury Tours ', sua etapa falhará porque não há uma caixa de texto com um atributo "userName" na página inicial do Google.</p> <a id="menu-8"></a> <h2>Ponto de partida</h2> <p><strong>Um ponto inicial é um indicador que informa ao Selenium IDE em quais linhas a execução será iniciada</strong> . <strong>Sua tecla de atalho é "S".</strong></p> <p>No exemplo acima, a reprodução começará na terceira linha (digite | senha | invalidPW). <strong>Você só pode ter um ponto inicial em um único script de teste.</strong></p> <p>O ponto de início é semelhante a Executar Comando, de forma que eles dependem da página exibida no momento. O ponto inicial falhará se você estiver na página errada.</p> <a id="menu-9"></a> <h2>Breakpoints</h2> <p>Os pontos de interrupção são indicadores que informam ao Selenium IDE onde pausar automaticamente o teste. <strong>A tecla de atalho é "B".</strong></p> <p>O destaque amarelo significa que a etapa atual está pendente. Isso prova que o Selenium IDE pausou a execução nessa etapa. <strong>Você pode ter vários pontos de interrupção em um caso de teste.</strong></p> <a id="menu-10"></a> <h2>Etapa</h2> <p>Ele permite que você execute comandos sucessivos um de cada vez após pausar o caso de teste. Vamos usar o cenário da seção anterior "Pontos de interrupção".</p> <table> <tbody> <tr> <td width="50%"> </td> <td> <p><strong>Antes de clicar em "Etapa".</strong></p> <p>O caso de teste pausa na linha "clickAndWait | login".</p> </td> </tr> <tr> <td width="50%"> </td> <td> <p><strong>Depois de clicar em "Etapa".</strong></p> <p>A linha "clickAndWait | login" é executada e pausa para o próximo comando (verifyTitle | Sign-on: Mercury Tours).</p> <p>Observe que a próxima linha está pausada, embora não haja nenhum ponto de interrupção lá. Este é o objetivo principal do recurso Step - ele executa os comandos seguintes, um de cada vez, para dar a você mais tempo para inspecionar o resultado após cada etapa.</p> </td> </tr> </tbody> </table> <a id="menu-11"></a> <h2>Coisas importantes a serem observadas ao usar outros formatos na visualização de código-fonte</h2> <p><strong>Selenium IDE funciona bem apenas com HTML - outros formatos ainda estão em modo experimental</strong> . <strong>NÃO</strong> é <strong>aconselhável</strong> criar ou editar testes usando outros formatos na visualização do código-fonte porque ainda há muito trabalho necessário para torná-lo estável. Abaixo estão os bugs conhecidos da versão 1.9.1.</p> <ul> <li>Você não será capaz de executar a reprodução nem voltar para a visualização em tabela, a menos que reverta para o HTML.</li> <li>A única maneira de adicionar comandos com segurança no código-fonte é gravando-os.</li> <li>Quando você modifica o código-fonte manualmente, tudo é perdido quando você muda para outro formato.</li> <li>Embora você possa salvar seu caso de teste na Visualização de código-fonte, o Selenium IDE não será capaz de abri-lo.</li> </ul> <p><strong>A maneira recomendada de converter os testes Selenese é usar a opção "Export Test Case As ..." no menu File, e não por meio da Source View.</strong></p> <a id="menu-12"></a> <h2>Resumo</h2> <ul> <li>Os scripts de teste podem ser criados gravando ou digitando os comandos e parâmetros manualmente.</li> <li>Ao criar scripts manualmente, o Firebug é usado para obter o localizador.</li> <li>O botão Localizar é usado para verificar se o comando é capaz de acessar o elemento correto.</li> <li>A Visualização de tabela exibe um script de teste em formato tabular enquanto a Visualização de código-fonte o exibe em formato HTML.</li> <li>Alterar a visualização do código-fonte para um formato não HTML ainda é experimental.</li> <li>Não use a Visualização do código-fonte na criação de testes em outros formatos. Em vez disso, use os recursos de exportação.</li> <li>Os parâmetros não são obrigatórios o tempo todo. Depende do comando.</li> <li>Existem três tipos de comandos:</li> <ul> <li>Ações - interage diretamente com os elementos da página</li> <li>Acessores - "lê" uma propriedade de elemento e a armazena em uma variável</li> <li>Assertions - compara um valor real com um esperado</li> </ul> <li>As afirmações têm três tipos:</li> <ul> <li>Assert - em caso de falha, as etapas seguintes não são mais executadas</li> <li>Verificar - em caso de falha, as etapas seguintes ainda são executadas.</li> <li>WaitFor - passa se a condição especificada se tornar verdadeira dentro do período de tempo limite; caso contrário, irá falhar</li> </ul> <li>Os comandos mais comuns são:</li> <ul> <li>abrir</li> <li>click / clickAndWait</li> <li>type / typeKeys</li> <li>verifyTitle / assertTitle</li> <li>verifyTextPresent</li> <li>verifyElementPresent</li> <li>verifyTable</li> <li>waitForPageToLoad</li> <li>waitForElementPresent</li> </ul> </ul> </div> </article> <div id="container-5533149ee6411a5f99b370c693e87966"></div> </div> </div> </div> </div> </div> <aside class="col-lg-4 sidebar sidebar--right"> <div class="widget widget-popular-posts"> <h2 class="widget-title">Publicações Populares</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225857-difference-between-microprocessor-and-microcontroller" title="Diferença entre microprocessador e microcontrolador" rel="bookmark"><img src="https://cdn.css-code.org/4146675/difference_between_microprocessor_and_microcontroller.png.webp" loading="lazy" alt="Diferença entre microprocessador e microcontrolador" title="Diferença entre microprocessador e microcontrolador" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225857-difference-between-microprocessor-and-microcontroller" title="Diferença entre microprocessador e microcontrolador" rel="bookmark">Diferença entre microprocessador e microcontrolador 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225858-top-18-embedded-systems-interview-questions-and-answers" title="18 principais perguntas da entrevista sobre sistemas incorporados & Respostas" rel="bookmark"><img src="https://cdn.css-code.org/2934087/top_18_embedded_systems_interview_questions_ampamp_answers.jpg.webp" loading="lazy" alt="18 principais perguntas da entrevista sobre sistemas incorporados & Respostas" title="18 principais perguntas da entrevista sobre sistemas incorporados & Respostas" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225858-top-18-embedded-systems-interview-questions-and-answers" title="18 principais perguntas da entrevista sobre sistemas incorporados & Respostas" rel="bookmark">18 principais perguntas da entrevista sobre sistemas incorporados & Respostas 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225859-15-best-youtube-audio-ripper-to-extract-audio-from-youtube" title="15 MELHOR YouTube Audio Ripper para extrair áudio do YouTube" rel="bookmark"><img src="https://cdn.css-code.org/4216123/15_best_youtube_audio_ripper_to_extract_audio_from_youtube.png.webp" loading="lazy" alt="15 MELHOR YouTube Audio Ripper para extrair áudio do YouTube" title="15 MELHOR YouTube Audio Ripper para extrair áudio do YouTube" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225859-15-best-youtube-audio-ripper-to-extract-audio-from-youtube" title="15 MELHOR YouTube Audio Ripper para extrair áudio do YouTube" rel="bookmark">15 MELHOR YouTube Audio Ripper para extrair áudio do YouTube 2025</a></h3> </div> </div> </li> </ul> </div> <div class="widget widget-popular-posts"> <h2 class="widget-title">Melhores comentários para o mês</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226574-python-numpy-array-tutorial" title="Tutorial Python Numpy Array" rel="bookmark">Tutorial Python Numpy Array</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226576-numpy-reshape-and-numpy-flatten-in-python" title="Numpy.reshape () e numpy.flatten () em Python" rel="bookmark">Numpy.reshape () e numpy.flatten () em Python</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226577-numpy-hstack-and-numpy-vstack-in-python-with-example" title="Numpy.hstack () e numpy.vstack () em Python com Exemplo" rel="bookmark">Numpy.hstack () e numpy.vstack () em Python com Exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226578-numpy-zeros-in-python-numpy-ones-in-python-with-example" title="Numpy.zeros () em Python - numpy.ones () em Python com Exemplo" rel="bookmark">Numpy.zeros () em Python - numpy.ones () em Python com Exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226579-how-to-download-and-install-tensorflow-jupyter-windowsmac" title="Como fazer o download & Instale o TensorFLow: Jupyter - Windows / Mac" rel="bookmark">Como fazer o download & Instale o TensorFLow: Jupyter - Windows / Mac</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226580-numpy-linspace-and-numpy-logspace-in-python-with-example" title="Numpy.linspace () e numpy.logspace () em Python com Exemplo" rel="bookmark">Numpy.linspace () e numpy.logspace () em Python com Exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226581-numpy-asarray-in-python-with-example" title="Numpy.asarray () em Python com exemplo" rel="bookmark">Numpy.asarray () em Python com exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226582-np-arange-numpy-arange-function-in-python" title="Np.arange () - Função NumPy Arange em Python" rel="bookmark">Np.arange () - Função NumPy Arange em Python</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226583-indexing-and-slicing-numpy-arrays-in-python-with-example" title="Indexação e divisão de matrizes NumPy em Python com exemplo" rel="bookmark">Indexação e divisão de matrizes NumPy em Python com exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226584-numpy-statistical-functions-with-example" title="Funções estatísticas NumPy com exemplo" rel="bookmark">Funções estatísticas NumPy com exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226585-numpy-matrix-multiplication-with-np-matmul-example" title="NumPy Matrix Multiplication com np.matmul () Exemplo" rel="bookmark">NumPy Matrix Multiplication com np.matmul () Exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226586-how-to-download-and-install-rstudio-anaconda-on-windowsmac" title="Como fazer o download & Instale o Rstudio: Anaconda no Windows / Mac" rel="bookmark">Como fazer o download & Instale o Rstudio: Anaconda no Windows / Mac</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226587-arithmetic-and-logical-operators-r-data-types-with-example" title="Aritmética & Operadores lógicos: tipos de dados R com exemplo" rel="bookmark">Aritmética & Operadores lógicos: tipos de dados R com exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226588-numpy-dot-in-python-numpy-dot-product-function-and-example" title="Numpy.dot () em Python - Função do produto Numpy Dot & Exemplo" rel="bookmark">Numpy.dot () em Python - Função do produto Numpy Dot & Exemplo</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226589-for-loop-in-r-with-examples-for-list-and-matrix" title="For Loop em R com exemplos para lista e matriz" rel="bookmark">For Loop em R com exemplos para lista e matriz</a></h3> </div> </div> </li> </ul> </div> <div id="container-5533149ee6411a5f99b370c693e87966"></div> <div class="widget widget-popular-posts"> <h2 class="widget-title">Principais Artigos</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8004083-dynamic-title-tag" title="Tag de título dinâmico - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/6915023/dynamic_title_tag_css-tricks.png.webp" loading="lazy" alt="Tag de título dinâmico - CSS-Tricks" title="Tag de título dinâmico - CSS-Tricks" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8004083-dynamic-title-tag" title="Tag de título dinâmico - CSS-Tricks" rel="bookmark">Tag de título dinâmico - CSS-Tricks 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8004084-get-content-by-id" title="Obtenha conteúdo por ID - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/7657100/get_content_by_id_css-tricks.png.webp" loading="lazy" alt="Obtenha conteúdo por ID - CSS-Tricks" title="Obtenha conteúdo por ID - CSS-Tricks" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8004084-get-content-by-id" title="Obtenha conteúdo por ID - CSS-Tricks" rel="bookmark">Obtenha conteúdo por ID - CSS-Tricks 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8004085-get-featured-image-url" title="Obter URL da imagem em destaque - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/4564946/get_featured_image_url_css-tricks.png.webp" loading="lazy" alt="Obter URL da imagem em destaque - CSS-Tricks" title="Obter URL da imagem em destaque - CSS-Tricks" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8004085-get-featured-image-url" title="Obter URL da imagem em destaque - CSS-Tricks" rel="bookmark">Obter URL da imagem em destaque - CSS-Tricks 2025</a></h3> </div> </div> </li> </ul> </div> </aside> </div> </div> <footer class="footer footer--dark"> <div class="container"> <div class="footer__widgets"> <div class="row"> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Publicações Populares</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225165-python-new-line-how-to-print-without-newline-in-python" title="Python New Line: Como imprimir SEM Newline em Python" rel="bookmark">Python New Line: Como imprimir SEM Newline em Python</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225166-python-copy-file-using-shutil-copy-shutil-copystat" title="Arquivo COPY do Python usando shutil.copy (), shutil.copystat ()" rel="bookmark">Arquivo COPY do Python usando shutil.copy (), shutil.copystat ()</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225167-python-check-if-file-or-directory-exists" title="Python Verifique se o arquivo ou diretório existe" rel="bookmark">Python Verifique se o arquivo ou diretório existe</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225168-python-file-handling-how-to-create-open-append-read-write" title="Manuseio de arquivos Python: como criar, abrir, anexar, ler, escrever" rel="bookmark">Manuseio de arquivos Python: como criar, abrir, anexar, ler, escrever</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225169-python-rename-file-and-directory-using-os-rename" title="Python Renomear arquivo e diretório usando os.rename ()" rel="bookmark">Python Renomear arquivo e diretório usando os.rename ()</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Escolha Do Editor</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225922-how-to-create-pivot-table-in-excel-beginners-tutorial" title="Como criar uma tabela dinâmica no Excel: tutorial para iniciantes" rel="bookmark">Como criar uma tabela dinâmica no Excel: tutorial para iniciantes</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225924-what-is-microsoft-office-365-benefits-of-excel-on-cloud" title="O que é o Microsoft Office 365? Benefícios do Excel on Cloud" rel="bookmark">O que é o Microsoft Office 365? Benefícios do Excel on Cloud</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225925-advanced-charts-and-graph-in-excel" title="Gráficos & avançados Gráfico em Excel" rel="bookmark">Gráficos & avançados Gráfico em Excel</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225926-csv-vs-excel-xls-whats-the-difference" title="CSV vs Excel (.xls) - Qual é a diferença?" rel="bookmark">CSV vs Excel (.xls) - Qual é a diferença?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8225927-excel-isblank-function-learn-with-example" title="Função ISBLANK do Excel: Aprenda com o exemplo" rel="bookmark">Função ISBLANK do Excel: Aprenda com o exemplo</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Principais Artigos</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8002984-mask-repeat" title="Máscara-repetição - CSS-Tricks" rel="bookmark">Máscara-repetição - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8002986-mask-position" title="Posição da máscara - CSS-Tricks" rel="bookmark">Posição da máscara - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8002987-mask-size" title="Tamanho da máscara - CSS-Tricks" rel="bookmark">Tamanho da máscara - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8002989-max-height" title="Altura máxima - CSS-Tricks" rel="bookmark">Altura máxima - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8002990-max-width" title="Largura máxima - CSS-Tricks" rel="bookmark">Largura máxima - CSS-Tricks</a></h3> </div> </div> </li> </ul> </div> </div> </div> <p>© Copyright pt.css-code.org, 2025 Pode | <a href="https://pt.css-code.org/about-site" title="Sobre o site">Sobre o site</a> | <a href="https://pt.css-code.org/contacts" title="Contatos">Contatos</a> | <a href="https://pt.css-code.org/privacy-policy" title="Política de Privacidade">Política de Privacidade</a>. </p> </div> </div> </footer> <link href="https://css-code.org/template/css/style.min.css" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" /> </body> </html>