Como Encontrar Links Quebrados Usando O Selenium WebDriver?
que pensamentos vêm à mente quando você se depara com 404/página não encontrada / hiperlinks mortos em um site? Aargh! Você acharia irritante quando se deparar com hiperlinks quebrados, que é a única razão pela qual você deve se concentrar continuamente na remoção da existência de links quebrados em seu produto da web (ou site). Em vez de uma inspeção manual, você pode aproveitar a automação para testes de links quebrados usando o Selenium WebDriver.
quando um link específico é quebrado e um visitante pousa na página, isso afeta a funcionalidade dessa página e resulta em uma experiência de usuário ruim. Links mortos podem prejudicar a credibilidade do seu produto, pois “podem” dar uma impressão aos seus visitantes de que há um foco mínimo na experiência.
se o seu produto da web tiver muitas páginas (ou links) que resultem em um erro 404 (ou página não encontrada), as classificações de produtos nos mecanismos de pesquisa (por exemplo, Google) também serão gravemente afetadas. A remoção de links mortos é uma das partes integrantes da atividade de SEO (Search Engine Optimization).
nesta parte da série de tutoriais do Selenium WebDriver, mergulhamos profundamente em encontrar links quebrados usando o Selenium WebDriver. Demonstramos testes de links quebrados usando Selenium Python, Selenium Java, Selenium C# e Selenium PHP.
Introdução A links quebrados em testes na Web
em termos simples, links quebrados (ou links mortos) em um site (ou aplicativo da web) são links que não são acessíveis e não funcionam como previsto. Os links podem estar temporariamente desativados devido a problemas de servidor ou configurados incorretamente no back-end.
Além de páginas que resultar no erro 404, entre outros, exemplos de links quebrados são malformados URLs, links para o conteúdo (por exemplo, documentos, pdf, imagens, etc.) que foram movidos ou excluídos.
Proeminente Razões para Links Quebrados
Aqui estão algumas das razões por trás da ocorrência de links quebrados (links mortos ou link apodrece):
- Incorrecta ou com erros ortográficos URL digitada pelo usuário.
- alterações estruturais no site (ou seja, permalinks) com redirecionamentos de URL ou redirecionamentos internos não estão configurados corretamente.
- Links para conteúdo como vídeos, documentos, etc. que são movidos ou excluídos. Se o conteúdo for movido, os ‘links internos’ devem ser redirecionados para os links designados.
- tempo de inatividade temporário do site devido à manutenção do site, tornando o site temporariamente inacessível.
- tags HTML Quebradas, erros de JavaScript, personalizações HTML/CSS incorretas, elementos incorporados quebrados, etc., dentro da página principal, pode levar a links quebrados.
- restrições de geolocalização impedem o acesso ao site a partir de determinados endereços IP (se estiverem na lista negra) ou países específicos do mundo. O teste de geolocalização com Selenium ajuda a garantir que a experiência seja feita sob medida para o local (ou país) de onde o site é acessado.
por que você deve verificar links quebrados?
links quebrados são um grande turn-off para os visitantes que pousam em seu site. Aqui estão algumas das principais razões pelas quais você deve verificar se há links quebrados em seu site:
- links quebrados podem prejudicar a experiência do Usuário.
- a remoção de links quebrados (ou mortos) é essencial para SEO (Otimização de mecanismos de pesquisa), pois pode afetar a classificação do site nos mecanismos de pesquisa (por exemplo, Google).
o teste de links quebrados pode ser feito usando o Selenium WebDriver em uma página da web, que por sua vez pode ser usado para remover os links mortos do site.
links quebrados e códigos de status HTTP
quando um usuário visita um site, uma solicitação é enviada pelo navegador para o servidor do site. O servidor responde à solicitação do navegador com um código de três dígitos chamado ‘código de status HTTP.’
um código de status HTTP é a resposta do servidor a uma Solicitação enviada do navegador da web. Esses códigos de status HTTP são considerados equivalentes à conversa entre o navegador (do qual a solicitação de URL é enviada) e o servidor.
embora diferentes códigos de status HTTP sejam usados para diferentes fins, a maioria dos códigos é útil para diagnosticar problemas no site, minimizando o tempo de inatividade do site, o número de links mortos e muito mais. O primeiro dígito de cada código de status de três dígitos começa com os números 1 ~ 5. Os códigos de status são representados como 1xx, 2xx.., 5xx para indicar os códigos de status nesse intervalo específico. Como cada um desses intervalos consiste em uma classe diferente de resposta do servidor, limitaríamos a discussão aos códigos de status HTTP apresentados para links quebrados.
Aqui são comuns código de status de classes que são úteis na detecção de links quebrados com Selenium:
Aulas de Código de Status HTTP | Descrição |
---|---|
1xx | O Servidor ainda está pensando através do pedido. |
2xx | a Solicitação enviada pelo navegador foi concluída com êxito e a resposta esperada foi enviada ao navegador pelo servidor. |
3xx | isso indica que um redirecionamento está sendo executado. Por exemplo, o redirecionamento 301 é popularmente usado para implementar redirecionamentos permanentes em um site. |
4xx | isso indica que uma página específica (ou site completo) não está acessível. |
5xx | isso indica que o servidor não conseguiu concluir a solicitação, mesmo que uma solicitação válida tenha sido enviada pelo navegador. |
Códigos de Status HTTP apresentados na detecção de Links Quebrados
Aqui estão alguns dos Códigos de Status HTTP comuns apresentados pelo servidor web em encontrar um link quebrado:
Código de Status HTTP | Descrição |
---|---|
400 (Bad Request) | O servidor não consegue processar o pedido, conforme o mencionado URL está incorreta. |
400 (Bad Request – Bad Host) | isso indica que o nome do host é inválido devido ao qual a solicitação não pode ser processada. |
400 (Bad Request-Bad URL) | isso indica que o servidor não pode processar a solicitação, pois a URL inserida está malformada (ou seja, falta de colchetes, barras, etc.). |
400 (Bad Request-Timeout) | isso indica que as solicitações HTTP expiraram. |
400 (Solicitação incorreta-vazia) | a resposta retornada pelo servidor está vazia sem conteúdo e sem código de resposta. |
400 (isso indica que o servidor não consegue processar a solicitação, pois está ocupado no processamento de outras solicitações ou foi configurado incorretamente pelo proprietário do site. | |
403 (Proibido) | uma solicitação genuína é enviada ao servidor, mas se recusa a cumprir a mesma, pois é necessária autorização. |
404 (Página Não Encontrada) | O recurso (ou página) não está disponível no servidor. |
408 (tempo limite da solicitação) | o servidor expirou aguardando a solicitação. O cliente (ou seja, navegador) pode enviar a mesma solicitação dentro do tempo que o servidor está preparado para esperar. |
410 (Gone) | um código de status HTTP que é mais permanente do que 404 (página não encontrada). 410 significa que a página se foi.A página não está disponível no servidor, nem qualquer mecanismo de encaminhamento (ou redirecionamento) foi configurado. Os links que apontam para uma Página 410 estão enviando visitantes para um recurso morto. |
503 (Serviço indisponível) | isso indica que o servidor está temporariamente sobrecarregado, devido ao qual não pode processar a solicitação. Isso também pode significar que a manutenção está sendo realizada no servidor, indicando os mecanismos de pesquisa sobre o tempo de inatividade temporário do site. |
como encontrar links quebrados usando o Selenium WebDriver?
independentemente da linguagem usada com Selenium WebDriver, os princípios orientadores para testes de links quebrados usando Selenium permanecem os mesmos. Aqui estão as etapas para testes de links quebrados usando o Selenium WebDriver:
- Use a tag para coletar detalhes de todos os links presentes na página da web.
- envie uma solicitação HTTP para cada link.
- verifique o código de resposta correspondente recebido em resposta à Solicitação enviada na etapa anterior.
- valide se o link está quebrado ou não com base no código de resposta enviado pelo servidor.
- repita as etapas (2-4) para cada link presente na página.
neste tutorial do Selenium WebDriver, demonstraríamos como realizar testes de link quebrados usando o Selenium WebDriver em Python, Java, C# e PHP. Os testes são realizados na combinação (Chrome 85.0 + Windows 10) e a execução é realizada na grade Selenium baseada em nuvem fornecida pela LambdaTest.
para começar a usar o LambdaTest, crie uma conta na plataforma e observe o nome de usuário & chave de acesso disponível na seção Perfil do LambdaTest. Os recursos do navegador são gerados usando o gerador de recursos LambdaTest.
Aqui é o cenário de teste usado para encontrar links quebrados em um site usando o Selênio:
Cenário de Teste
- Ir para LambdaTest Blog i.e. https://www.lambdatest.com/blog/ sobre o google Chrome 85.0
- Recolher todos os links presentes na página
- Enviar solicitação HTTP para cada link
- Impressão se o link está quebrado ou não no terminal
É importante notar que o tempo gasto em links quebrados testes utilizando Selenium depende do número de links presentes no ” página web em teste. Quanto mais o número de links na página, mais tempo será gasto para encontrar links quebrados. Por exemplo, LambdaTest tem um grande número de links (~150+); portanto, o processo de encontrar links quebrados pode levar algum tempo (aproximadamente alguns minutos).
EXECUTAR SEU SCRIPT de TESTES NO SELENIUM GRID
2000+ Navegadores E OS
cadastro GRATUITO
Link Quebrado o Teste Usando Selenium Java
Implantação
Código passo a passo
1. Importe os pacotes necessários
os métodos no Pacote HttpURLConnection são usados para enviar solicitações HTTP e capturar o código de status HTTP (ou resposta).
os métodos no regex.Pacote padrão verifique se o link correspondente contém um endereço de E-mail ou número de telefone usando uma sintaxe especializada mantida em um padrão.
1
2
|
import java.líquida.HttpURLConnection;
import java.util.expressao.Padrao;
|
2. Colete os links presentes na página
os links presentes no URL em teste (ou seja, no Blog LambdaTest) estão localizados usando o tagname no Selenium. O nome da tag usado para identificação do elemento (ou link) é ‘a’.
os links são colocados em uma lista para iterar através da lista para verificar links quebrados na página.
1
|
Lista<WebElement> links = driver.findElements (por.tagName (“a”));
|
3. Iterar através de URLs
Iterador objeto é usado para fazer loop para percorrer a lista criada no Passo (2)
1
|
Iterator<WebElement> link = links.iterador();
|
4. Identifique e verifique os URLs
um loop while é executado até que o iterador de tempo (ou seja, link) não tenha mais elementos para iterar. O’ href ‘ da tag âncora é recuperado e o mesmo é armazenado na variável URL.
1
2
3
|
enquanto (link.hasNext())
{
url = link.proximo().getAttribute(“href”);
|
evite verificar os links se:
A. O link é nulo ou vazio
1
2
3
4
5
|
se ((url == null) || (url.isEmpty()))
{
sistema.as.println(“URL não está configurado para a marca de âncora ou ela está vazia”);
continuar;
}
|
b. O link contém mailto ou número de telefone
1
2
3
4
5
|
se ((url.como baixar e instalar Minecraft.startsWith (tel)))
{
sistema.as.println(“endereço de e-Mail ou Telefone detectado”);
continuar;
}
|
Ao verificar a página no LinkedIn, o código de status do HTTP é 999. Uma variável booleana (ou seja,, LinkedIn) é definido como true para indicar que não é um link quebrado.
1
2
3
4
5
|
se(url.startsWith (LinkedInPage))
{
sistema.as.println(“URL começa com o LinkedIn, o esperado código de status é 999”);
bLinkedIn = true;
}
|
5. Valide os links por meio do código de Status
os métodos na classe HttpURLConnection fornecem a provisão para enviar solicitações HTTP e capturar o código de status HTTP.
o método openConnection da classe URL abre a conexão com o URL especificado. Ele retorna uma instância URLConnection representando uma conexão com o objeto remoto que é referido pelo URL. É tipo-casted a HttpURLConnection.
1
2
3
4
5
6
7
|
HttpURLConnection urlconnection = null;
……………………………………….
……………………………………….
……………………………………….
urlconnection = (HttpURLConnection) (novo URL(url).openConnection());
urlconnection.setRequestMethod (“cabeça”);
|
o setRequestMethod na classe HttpURLConnection define o método para solicitação de URL. O tipo de solicitação é definido como HEAD para que apenas os cabeçalhos sejam retornados. Por outro lado, o tipo de solicitação GET teria retornado o corpo do documento, o que não é necessário neste cenário de teste específico.
o método connect na classe HttpURLConnection estabelece a conexão com o URL e envia uma solicitação HTTP.
1
|
urlconnection.conectar();
|
o método getResponseCode retorna o código de status HTTP para a Solicitação enviada anteriormente.
1
|
responseCode = urlconnection.getResponseCode();
|
Para o Código de Status do HTTP é de 400 (ou mais), a variável que contém links quebrados contagem (por exemplo, broken_links) é incrementado; de outro, a variável que contém links válido (por exemplo, valid_links) é incrementado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
se (responseCode >= 400)
{
se ((bLinkedIn == true) && (responseCode == LinkedInStatus))
{
do Sistema.as.println (url + “é uma página do LinkedIn e não é um link quebrado”);
valid_links++;
}
else
{
sistema.as.println(url + “é um link quebrado”);
broken_links++;
}
}
mais
{
do Sistema.as.println(url + “é um link válido”);
valid_links++;
}
|
Execução
Para links quebrados testes utilizando Selenium Java, nós criei um projeto no IntelliJ IDEA. O pom básico.o arquivo xml foi suficiente para o trabalho!
aqui está o instantâneo de execução, que indica 169 links válidos e 0 links quebrados na página do blog LambdaTest.
os links contendo os endereços de E-mail e números de telefone foram excluídos da lista de pesquisa, conforme mostrado abaixo.
você pode ver o teste sendo executado na captura de tela abaixo e sendo concluído em 2 min 35 segundos, conforme mostrado nos logs de automação do LambdaTest.
teste de Link quebrado usando Selenium Python
implementação
passo a passo do Código
1. Import Modules
além de importar os módulos Python para o Selenium WebDriver, também importamos o módulo requests. O módulo de solicitações permite enviar todos os tipos de solicitações HTTP. Ele também pode ser usado para passar parâmetros no URL, enviar cabeçalhos personalizados e muito mais.
1
2
3
|
as solicitações de importação de
importar urllib3
de pedidos.exceções de importação MissingSchema, InvalidSchema, InvalidURL
|
2. Colete os links presentes na página
os links presentes no URL em teste (ou seja, blog LambdaTest) são encontrados localizando os elementos da web pela propriedade CSS Selector “a”.
1
|
links = driver.find_elements (por.CSS_SELECTOR, “a”)
|
como queremos que o elemento seja iterável, usamos o método find_elements (e não o método find_element).
3. Iterar através dos URLs para validação
o método head do módulo requests é usado para enviar uma solicitação HEAD para o URL especificado. O método get_attribute é usado em todos os links para obter o atributo ‘href’ da tag âncora.
o método head é usado principalmente em cenários em que apenas cabeçalhos status_code ou HTTP são necessários e o conteúdo do arquivo (ou URL) não é necessário. O método head retorna solicitações.Objeto de resposta que também contém o código de status HTTP (ou seja, solicitação.codigo).
1
2
3
4
|
para o link no links:
tenta:
request = solicitações.cabeça (link.get_attribute (‘href’), data ={‘chave’:’valor’})
imprimir (“Status de” + link.get_attribute (‘href’) + ” é ” + str(pedido.status_code))
|
o mesmo conjunto de operações é realizado iterativamente até que todos os ‘links’ presentes na página tenham sido esgotados.
4. Valide os links por meio do código de Status
se o código de resposta HTTP para a solicitação HTTP enviada na Etapa(3) For 404 (ou seja, página não encontrada), isso significa que o link é um link quebrado. Para links que não estão quebrados, o código de status HTTP é 200.
1
2
3
4
|
se (pedido.status_code == 404):
broken_links = (broken_links + 1)
else:
valid_links = (valid_links + 1)
|
5. Ignorar solicitações irrelevantes
quando aplicadas em links que não contêm o atributo ‘href’ (por exemplo, mailto, telefone, etc.), o método head resulta em uma exceção (ou seja, MissingSchema, InvalidSchema).
1
2
3
4
5
6
|
except requests.exceptions.MissingSchema:
print(“Encountered MissingSchema Exception”)
except requests.exceptions.InvalidSchema:
print(“Encountered InvalidSchema Exception”)
except:
print(“Encontrado Algumas execption”)
|
Estas exceções são capturadas, e o mesmo é impresso no terminal.
execução
usamos o PyUnit (ou unittest) aqui, a estrutura de teste padrão em Python para testes de links quebrados usando Selenium. Execute o seguinte comando no terminal:
1
|
python Broken_Links.py
|
a execução levaria cerca de 2-3 minutos, já que a página do blog LambdaTest consiste em aproximadamente 150 links. A captura de tela de execução abaixo mostra que a página tem 169 links válidos e zero links quebrados.
você testemunharia a exceção InvalidSchema ou exceção MissingSchema em alguns lugares, o que indica que esses links são ignorados da avaliação.
a solicitação principal para o LinkedIn (ou seja,) resulta em um código de status HTTP de 999. Conforme declarado neste tópico no StackOverflow, o LinkedIn filtra as solicitações com base no user-agent e a solicitação resultou em ‘Acesso negado’ (ou seja, 999 Como código de status HTTP).
verifica-se que o LinkedIn link presente no LambdaTest página do blog está quebrado ou não, executando o mesmo teste no local Selenium Grid, o que resultou em HTTP/1.1 200 OK.
teste de Link quebrado usando Selenium C#
implementação
passo a passo do Código
a estrutura NUnit é usada para testes de automação; nosso blog anterior sobre NUnit Test automation com Selenium C# pode ajudá-lo a começar com a estrutura.
1. Inclua HttpClient
o namespace HttpClient é adicionado para uso por meio da diretiva using. A classe HttpClient em C# fornece uma classe base para enviar solicitações HTTP e receber a resposta HTTP de um recurso identificado pelo URI.
a Microsoft recomenda o uso de System.Net.Http.HttpClient em vez de System.Net.HttpWebRequest; HttpWebRequest também pode ser usado para detectar links quebrados no Selenium C#.
1
2
|
usando o Sistema.Líquida.Http;
utilizar o Sistema.Roscar.Tarefas;
|
2. Definir um método assíncrono que retorna uma tarefa
um método de teste assíncrono é definido como usando o método GetAsync que envia uma solicitação GET para o URI especificado como uma operação assíncrona.
1
2
|
público assíncrona Tarefas LT_Broken_Links_Test()
{
|
3. Colete os links presentes na página
em primeiro lugar, criamos uma instância de HttpClient.
1
|
usando var cliente = new HttpClient();
|
os links presentes no URL em teste (ou seja, blog LambdaTest) são coletados localizando os elementos da web pela propriedade TagName “a”.
1
|
var links = driver.FindElements (Por.TagName(“um”));
|
O find_elements método de Selênio é usado para localizar os links na página, ele retorna uma matriz (ou lista) que pode ser iterado para verificar a exeqüibilidade dos links.
4. Iterar através dos URLs para validação
os links localizados usando o método find_elements são verificados em um loop for.
1
2
|
foreach (var link no links)
{
|
Podemos filtrar os links que contêm /e-mail-endereços/números de telefone/LinkedIn endereços. Os links sem texto de Link também são filtrados.
1
2
|
if (!(link.Texto.Contém (“Email”) | | link.Texto.Contém (“https://www.linkedin.com”) | | link.Texto = = “” / / link.Igual (nulo)))
{
|
o método GetAsync da classe HttpClient envia uma solicitação GET para o URI correspondente como uma operação assíncrona. O argumento para o método GetAsync é o valor do atributo ‘href’ da âncora coletado usando o método GetAttribute.
a avaliação do método assíncrono é suspensa pelo operador await até a conclusão da operação assíncrona. Após a conclusão da operação assíncrona, o operador await retorna o HttpResponseMessage que inclui os dados e o código de status.
1
2
3
|
/* Obter o URI */
HttpResponseMessage resposta = esperam cliente.GetAsync (link.GetAttribute(“href”));
sistema.Consola.Como baixar e instalar … GetAttribute (“href”)} status é: {resposta.StatusCode}”);
|
5. Valide os links por meio do código de Status
se o código de resposta HTTP (ou seja, resposta.StatusCode) para a solicitação HTTP enviada na Etapa (4) é HttpStatusCode.OK (ou seja, 200), isso significa que a solicitação foi concluída com êxito.
1
2
3
4
5
6
7
8
9
|
do Sistema.Console.WriteLine($”URL: {link.GetAttribute(“href”)} status is :{response.StatusCode}”);
if (response.StatusCode == HttpStatusCode.OK)
{
valid_links++;
}
else
{
broken_links++;
}
|
NotSupportedException and ArgumentNullException exceptions are handled as a part of exception handling.
1
2
3
4
5
6
7
8
|
catch (Exception ex)
{
if ((ex is ArgumentNullException) ||
(ex is NotSupportedException))
{
System.Console.WriteLine(“Exception occured\n”);
}
}
|
Execução
Aqui é o instantâneo de execução, o que mostra que o teste foi executado com êxito.
ocorreram exceções para links para os ‘ícones de compartilhamento’, ou seja, WhatsApp, Facebook, Twitter, etc. Além desses links, o restante dos links na página do blog LambdaTest retorna HttpStatusCode.OK (ou seja, 200).
teste de Link quebrado usando Selenium PHP
implementação
passo a passo do Código
1. Leia a fonte da página
a função file_get_contents em PHP é usada para ler a fonte HTML da página em uma variável de String (por exemplo, $html).
1
2
|
$test_url = “https://www.lambdatest.com/blog/”;
$html = file_get_contents($test_url);
|
2. Instanciar a classe DOMDocument
a classe DOMDocument em PHP representa um documento HTML inteiro e serve como raiz da árvore de documentos.
1
|
$htmlDom = new DOMDocument;
|
3. Parse HTML da página
a função DOMDocument:: loadHTML () é usada para analisar a fonte HTML contida em $html. Na execução bem-sucedida, a função retorna um objeto DOMDocument.
1
|
@$htmlDom->loadHTML($html);
|
4. Extraia os links da página
os links presentes na página são extraídos usando o método getElementsByTagName da classe DOMDocument. Os elementos (ou links) são pesquisados com base na tag ‘a’ da fonte HTML analisada.
a função getElementsByTagName retorna uma nova instância do DOMNodeList que contém os elementos (ou links) do nome da tag local (ou seja, marca)
1
|
$links = $htmlDom->getElementsByTagName (“um’);
|
5. Iterar através dos URLs para validação
o DOMNodeList, que foi criado na Etapa (4), é percorrido para verificar a validade dos links.
1
2
3
|
foreach($links $link)
{
$linkText = $link->nodeValue;
|
detalhes do link correspondente são obtidos utilizando-se o ‘href’ atributo. O método GetAttribute é usado para o mesmo.
1
|
$linkHref = $link->getAttribute(‘href’);
|
Ignorar a verificação de links se:
um. O link está vazia
1
2
3
4
|
if(strlen(trim($linkHref)) == 0)
{
continuar;
}
|
b. O link é um marcador ou um link de âncora
1
2
3
4
|
if($linkHref == ‘#’)
{
continuar;
}
|
c. O link contém mailto ou techtudo (i.é., social opções de compartilhamento).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
function check_nonlinks($test_url, $test_pattern)
{
if (preg_match($test_pattern, $test_url) == false)
{
return false;
}
mais
{
retornar verdadeiro;
}
}
função pública test_Broken_Links()
{
$pattern_1 = ‘/\baddtoany\b/’;
$pattern_2 = ‘/\bmailto\b/’;
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
if ((check_nonlinks($linkHref, $pattern_1))||(check_nonlinks($linkHref, $pattern_2)))
{
print(“\nAdd_To_Any ou e-mail encontrado”);
continuar;
}
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
}
|
a função preg_match usa uma expressão regular (regex) para realizar uma pesquisa sem distinção de maiúsculas e minúsculas para mailto e addtoany. As expressões regulares para mailto & addtoany são ‘/ \ bmailto \ b / ‘ & ‘/\baddtoany \ b / ‘ respectivamente.
6. Valide o código HTTP usando cURL
usamos curl para obter informações sobre o status do link correspondente. O primeiro passo é inicializar uma sessão cURL com o’ link ‘ no qual a validação deve ser feita. O método retorna uma instância cURL que será usada na última parte da implementação.
1
|
$curl = curl_init($linkHref);
|
O curl_setopt método é utilizado para a definição de opções sobre o dado cURL identificador de sessão (i.e. $curl).
1
|
curl_setopt($curl, CURLOPT_NOBODY, true);
|
o método curl_exec é chamado para execução da sessão cURL fornecida. Ele retorna verdadeiro na execução bem-sucedida.
1
|
$resultado = curl_exec($curl);
|
Esta é a parte mais importante da lógica que verifica links quebrados na página. A função curl_getinfo que leva o identificador de sessão cURL (ou seja, $curl) e CURLINFO_RESPONSE_CODE (ou seja , CURLINFO_HTTP_CODE) são usados para obter informações sobre a última transferência. Ele retorna o código de status HTTP em resposta.
1
|
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
Após a conclusão bem sucedida do pedido, Código de Status HTTP 200 é retornado, e a variável que armazena as ligações válidas contagem (por exemplo, $valid_links) é incrementado. Para links que resultam no código de status HTTP de 400 (ou mais), uma verificação é realizada se o ‘link em teste’ for a página do LambdaTest no LinkedIn. Como mencionado anteriormente, o código de status da Página do LinkedIn será 999; portanto, $valid_links é incrementado.
para todos os outros links que retornaram o código de status HTTP de 400 (ou mais), a variável que contém a contagem de links quebrados (ou seja, $broken_links) é incrementada.
1
2
3
4
5
6
7
8
9
10
|
se (($linkedin_page_status) && ($statusCode == 999))
{
print(“\nLink ” . $ linkHref . “é a página do LinkedIn e o status é”.$statusCode);
$ validlinks++;
}
else
{
imprimir (“\nLink”. $ linkHref . “está quebrado link e status é”.$ statusCode );
$brokenlinks++;
}
|
Execução
Podemos usar o PHPUnit framework de testes para links quebrados na página. Para baixar a estrutura do PHPUnit, adicione o compositor de arquivos.json na pasta raiz e execute composer require no terminal.
execute o seguinte comando no terminal para verificar links quebrados no Selenium PHP.
1
|
fornecedor\bin\testes phpunit\BrokenLinksTest.php
|
Aqui é o instantâneo de execução que mostra um total de 116 links válido e 0 links quebrados no LambdaTest Blog. Como os links para compartilhamento social (ou seja, addtoany) e endereço de E-mail são ignorados, a contagem total é de 116 (169 no teste Selenium Python).
Conclusão
links Quebrados, também chamado de links mortos ou podridão de links, pode prejudicar a experiência do usuário se eles estão presentes no site. Links quebrados também podem afetar os rankings nos mecanismos de pesquisa. Portanto, o teste de Link quebrado deve ser realizado periodicamente para atividades relacionadas ao desenvolvimento e teste de sites.Em vez de depender de ferramentas de terceiros ou métodos manuais para verificar links quebrados em um site, o teste de links quebrados pode ser feito usando o Selenium WebDriver com Java, Python, C# ou PHP. O código de status HTTP, retornado ao acessar qualquer página da web, deve ser usado para verificar links quebrados usando a estrutura Selenium.
Perguntas Frequentes
Como encontro links quebrados no selenium Python?
para verificar os links quebrados, você precisará coletar todos os links na página da web com base na tag. Em seguida, envie uma solicitação HTTP para os links e leia o código de resposta HTTP. Descubra se o link é válido ou quebrado com base no código de resposta HTTP.
Como faço para verificar se há links quebrados?
para monitorar continuamente seu site em busca de links quebrados usando o Google Search Console, siga estas etapas:
- faça login na sua conta do Google Search Console.
- clique no site que deseja monitorar.
- clique em rastrear e, em seguida, clique em Buscar como Google.
- depois que o Google rastreia o site, para acessar os resultados, clique em rastrear e, em seguida, clique em erros de rastreamento.
- em erros de URL, você pode ver todos os links quebrados que o Google descobriu durante o processo de rastreamento.
Como faço para encontrar imagens quebradas na web usando selenium?
visite a página. Iterar através de cada imagem no arquivo HTTP e ver se ele tem um código de status 404. Armazene cada imagem quebrada em uma coleção. Verifique se a coleção de imagens quebradas está vazia.
Como faço para obter todos os links no selenium?
você pode obter todos os links presentes em uma página da web com base na tag <a> presente. Cada tag< a > representa um link. Use os localizadores selenium para encontrar todas essas tags facilmente.
por que os links quebrados são ruins?
eles podem prejudicar a experiência do usuário – quando os usuários clicam em links e alcançam erros 404 sem saída, ficam frustrados e podem nunca retornar. Eles desvalorizam seus esforços de SEO – Links quebrados restringem o fluxo de equidade de links em todo o seu site, impactando negativamente os rankings.
Himanshu Sheth
Himanshu Sheth é um experiente tecnólogo e blogueiro com mais de 15 anos de diversos experiência de trabalho. Ele atualmente trabalha como o’ Evangelista desenvolvedor líder ‘e’ Gerente Sênior ‘ na LambdaTest. Ele é muito ativo com a comunidade de startups em Bengaluru (e no sul) e adora interagir com fundadores apaixonados em seu blog pessoal (que ele mantém desde os últimos 15 anos).