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="/8001126-trigger-click-on-input-when-label-is-clicked" title="Clique em Trigger em Input quando o Label for Clicado - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/7250426/trigger_click_on_input_when_label_is_clicked_css-tricks.png.webp" loading="lazy" alt="Clique em Trigger em Input quando o Label for Clicado - CSS-Tricks" title="Clique em Trigger em Input quando o Label for Clicado - 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="/8001126-trigger-click-on-input-when-label-is-clicked" title="Clique em Trigger em Input quando o Label for Clicado - CSS-Tricks" rel="bookmark">Clique em Trigger em Input quando o Label for Clicado - 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="/8002860-align-self" title="Alinhar-se - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/8122876/align-self_css-tricks.png.webp" loading="lazy" alt="Alinhar-se - CSS-Tricks" title="Alinhar-se - 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="/8002860-align-self" title="Alinhar-se - CSS-Tricks" rel="bookmark">Alinhar-se - 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="/8002861-all" title="Tudo - CSS-Tricks" rel="bookmark"><img src="https://cdn.css-code.org/8145203/all_css-tricks.png.webp" loading="lazy" alt="Tudo - CSS-Tricks" title="Tudo - 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="/8002861-all" title="Tudo - CSS-Tricks" rel="bookmark">Tudo - CSS-Tricks 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="/8225148-python-string-format-explain-with-examples" title="Python String format () Explique com EXEMPLOS" rel="bookmark">Python String format () Explique com EXEMPLOS</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="/8225149-python-string-find-method-with-examples" title="Método Python String find () com exemplos" rel="bookmark">Método Python String find () com exemplos</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="/8225151-python-functions-examples-call-indentation-arguments-and-return-values" title="Exemplos de funções Python: chamada, recuo, argumentos & Valores Retornados" rel="bookmark">Exemplos de funções Python: chamada, recuo, argumentos & Valores Retornados</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="/8225152-python-abs-function-absolute-value-examples" title="Função Python abs (): exemplos de valor absoluto" rel="bookmark">Função Python abs (): exemplos de valor absoluto</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="/8225153-python-main-function-and-method-example-understand-main" title="Função principal do Python & Exemplo de método: Entenda __main" rel="bookmark">Função principal do Python & Exemplo de método: Entenda __main</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="/8225154-python-lambda-functions-with-examples" title="Funções Python Lambda com EXEMPLOS" rel="bookmark">Funções Python Lambda com EXEMPLOS</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="/8225155-python-round-function-with-examples" title="Função round () do Python com EXEMPLOS" rel="bookmark">Função round () do Python com EXEMPLOS</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="/8225156-python-range-function-float-list-for-loop-examples" title="Função Python range (): Float, List, For loop Exemplos" rel="bookmark">Função Python range (): Float, List, For loop Exemplos</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="/8225157-python-timeit-with-examples" title="Python Timeit () com exemplos" rel="bookmark">Python Timeit () com exemplos</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="/8225158-python-map-function-with-examples" title="Função Python map () com EXEMPLOS" rel="bookmark">Função Python map () com EXEMPLOS</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="/8225159-yield-in-python-tutorial-generator-and-yield-vs-return-example" title="Rendimento em Python Tutorial: Generator & Exemplo de rendimento vs retorno" rel="bookmark">Rendimento em Python Tutorial: Generator & Exemplo de rendimento vs retorno</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="/8225160-python-queue-fifo-lifo-example" title="Fila Python: FIFO, exemplo LIFO" rel="bookmark">Fila Python: FIFO, exemplo LIFO</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="/8225161-enumerate-function-in-python-loop-tuple-string-example" title="Função Enumerate () em Python: Loop, Tuple, String (exemplo)" rel="bookmark">Função Enumerate () em Python: Loop, Tuple, String (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="/8225162-python-time-sleep-add-delay-to-your-code-example" title="Python time.sleep (): adicione atraso ao seu código (exemplo)" rel="bookmark">Python time.sleep (): adicione atraso ao seu código (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="/8225163-python-counter-in-collections-with-example" title="Contador Python em coleções com exemplo" rel="bookmark">Contador Python em coleções com exemplo</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="/8226027-40-best-free-network-monitoring-tools-and-software-2021" title="40 Melhores Ferramentas & Software (2021)" rel="bookmark"><img src="https://cdn.css-code.org/1172446/40_best_free_network_monitoring_tools_ampamp_software_2021.png.webp" loading="lazy" alt="40 Melhores Ferramentas & Software (2021)" title="40 Melhores Ferramentas & Software (2021)" 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="/8226027-40-best-free-network-monitoring-tools-and-software-2021" title="40 Melhores Ferramentas & Software (2021)" rel="bookmark">40 Melhores Ferramentas & Software (2021) 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="/8226028-components-of-operating-systems" title="Componentes de sistemas operacionais" rel="bookmark"><img src="https://cdn.css-code.org/2160642/components_of_operating_systems.png.webp" loading="lazy" alt="Componentes de sistemas operacionais" title="Componentes de sistemas operacionais" 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="/8226028-components-of-operating-systems" title="Componentes de sistemas operacionais" rel="bookmark">Componentes de sistemas operacionais 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="/8226029-cpu-scheduling-algorithms-in-operating-systems" title="Algoritmos de escalonamento de CPU em sistemas operacionais" rel="bookmark"><img src="https://cdn.css-code.org/1938302/cpu_scheduling_algorithms_in_operating_systems.png.webp" loading="lazy" alt="Algoritmos de escalonamento de CPU em sistemas operacionais" title="Algoritmos de escalonamento de CPU em sistemas operacionais" 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="/8226029-cpu-scheduling-algorithms-in-operating-systems" title="Algoritmos de escalonamento de CPU em sistemas operacionais" rel="bookmark">Algoritmos de escalonamento de CPU em sistemas operacionais 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="/8003397-119-custom-header-for-videos" title="# 119: Cabeçalho personalizado para vídeos - CSS-Tricks" rel="bookmark"># 119: Cabeçalho personalizado para vídeos - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003398-120-choosing-a-membership-plugin-for-wordpress" title="# 120: Escolhendo um plugin de associação para WordPress - CSS-Tricks" rel="bookmark"># 120: Escolhendo um plugin de associação para WordPress - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003399-121-a-template-for-generic-pages" title="# 121: Um modelo para páginas genéricas - CSS-Tricks" rel="bookmark"># 121: Um modelo para páginas genéricas - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003400-124-building-the-demos-archive" title="# 124: Construindo o Arquivo de Demonstrações - CSS-Tricks" rel="bookmark"># 124: Construindo o Arquivo de Demonstrações - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003402-123-building-the-videos-archive-part-2-navigation" title="# 123: Construindo o Arquivo de Vídeos, Parte 2 (Navegação) - CSS-Tricks" rel="bookmark"># 123: Construindo o Arquivo de Vídeos, Parte 2 (Navegação) - CSS-Tricks</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="/8003125-in-range" title=": dentro do intervalo - CSS-Tricks" rel="bookmark">: dentro do intervalo - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003126-last-child" title=": último filho - CSS-Tricks" rel="bookmark">: último filho - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003127-link" title=": link - CSS-Tricks" rel="bookmark">: link - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003128-matches" title=": jogos () - CSS-Tricks" rel="bookmark">: jogos () - CSS-Tricks</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003129-focus-visible" title=": foco visível - CSS-Tricks" rel="bookmark">: foco visível - CSS-Tricks</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="/8226187-ssd-vs-hdd-whats-the-difference-which-one-to-choose" title="SSD Vs HDD: Qual é a diferença? - Qual escolher?" rel="bookmark">SSD Vs HDD: Qual é a diferença? - Qual escolher?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226188-fat32-vs-exfat-vs-ntfs-whats-the-difference" title="FAT32 vs exFAT vs NTFS: Qual é a diferença?" rel="bookmark">FAT32 vs exFAT vs NTFS: 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="/8226189-independent-variables-vs-dependent-variables-key-differences" title="Variáveis ​​independentes vs variáveis ​​dependentes: principais diferenças" rel="bookmark">Variáveis ​​independentes vs variáveis ​​dependentes: principais diferenças</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226190-difference-between-class-and-object" title="Diferença entre classe e objeto" rel="bookmark">Diferença entre classe e objeto</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226191-15-best-code-review-tools-for-code-quality-analysis" title="15 MELHORES Ferramentas de Revisão de Código para Análise de Qualidade de Código" rel="bookmark">15 MELHORES Ferramentas de Revisão de Código para Análise de Qualidade de Código</a></h3> </div> </div> </li> </ul> </div> </div> </div> <p>© Copyright pt.css-code.org, 2025 Junho | <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>