[Java, Тестирование веб-сервисов] Как найти все битые ссылки на странице с помощью Selenium (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Когда вам нужно проверить все ссылки в вашем проекте, вы можете сделать это с помощью Postman или любого другого инструмента тестирования API, но есть более простой способ. Когда вы используете инструменты тестирования API, вам нужно написать все соединения ссылок один за другим, а когда ссылки меняются, вам нужно снова редактировать все тесты один за другим.Теперь с помощью этого java-кода вы можете проверить все ссылки. Эти ссылки могут быть ссылками pdf, изображения, видео или фотографии.Шаг 1: В HTML мы связываем ссылки с помощью этого кода: <a href="Adress"></a> это означает, что мы должны собрать все ссылки на веб-странице на основе <a>. Для этого мы используем этот код:List<WebElement> allLinks = driver.findElements(By.tagName(LINKS_TAG));LINKS_TAG - это "a". В конце страницы я добавлю весь код.Шаг 2: Определение и проверка URL-адресаString urlLink = link.getAttribute(LINKS_ATTRIBUTE);LINKS_ATTRIBUTE - это "href"Шаг 3: Отправка HTTP-запроса и считывание кодов HTTP-ответовМы создаем HttpConnection с параметром URL. Я добавил также Connection Timeout.URL url = new URL(urlLink);
HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection();
httpURLConnect.setConnectTimeout(5000);
httpURLConnect.connect();- Информационные коды ответов: 100-199
- Коды успешного ответа: 200-299
- Редирект коды: 300-399
- Коды ошибок клиента: 400-499
- Коды ошибок сервера: 500-599
В принципе, мы можем сказать, что если код ответа больше или равен 400, то в этом случае соединение прервано.import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class FindAllBrokenLinks {
public final String DRIVER_PATH = "Drivers/chromedriver";
public final String DRIVER_TYPE = "webdriver.chrome.driver";
public WebDriver driver;
public final String BASE_URL = "https://www.bbc.com/";
public final String LINKS_ATTRIBUTE = "href";
public final String LINKS_TAG = "a";
@BeforeTest
public void beforeTest(){
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-notifications","--ignore-certificate-errors","--disable-extensions");
System.setProperty(DRIVER_TYPE,DRIVER_PATH);
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.get(BASE_URL);
}
@Test
public void FindAllBrokenLinks() throws Exception{
List<WebElement> allLinks = driver.findElements(By.tagName(LINKS_TAG));
for(WebElement link:allLinks){
try {
String urlLink = link.getAttribute(LINKS_ATTRIBUTE);
URL url = new URL(urlLink);
HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection();
httpURLConnect.setConnectTimeout(5000);
httpURLConnect.connect();
if(httpURLConnect.getResponseCode()>=400)
{
System.out.println(urlLink+" - "+httpURLConnect.getResponseMessage()+"is a broken link");
}
else{
System.out.println(urlLink+" - "+httpURLConnect.getResponseMessage());
}
}catch (Exception e) {
}
}
}
@AfterClass
public void CloseDriver(){
driver.close();
}
}Я использовал URL веб-страницы BBC в качестве базового URL, но запуск этого кода занял 1 минуту и 49 секунд. :) Возможно, вам стоит выбрать другой сайт.Вот некоторые результаты тестов:https://www.bbc.com/sport — OKhttps://www.bbc.com/reel — OKhttps://www.bbc.com/worklife — OKhttps://www.bbc.com/travel — Временно приостановил работуhttps://www.bbc.com/future — OKhttps://www.bbc.com/culture — OKhttps://www.bbc.com/culture/music — OKhttp://www.bbc.co.uk/worldserviceradio/ — Не доступенhttp://www.bbc.co.uk/programmes/p00wf2qw — Не доступенhttps://www.bbc.com/news/world-europe-57039362 — OKПеревод подготовлен в рамках набора учащихся на курс "Java QA Automation Engineer". Если вам интересно узнать о курсе подробнее, а также познакомиться с преподавателем, приглашаем на день открытых дверей онлайн.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Leyla GORMEL
===========Похожие новости:- [Программирование, Java, .NET] Как я выбирал между .NET и Java
- [Java, SQL] Как выбрать 1 млн. записей из бд, записать в Excel и не упасть с OutOfMemoryError
- [Высокая производительность, Программирование, Java, Kubernetes] Простое ускорение Java с помощью Quarkus и JHipster (перевод)
- [Микросервисы] Архитектура микросервисов: Разрушение монолита (перевод)
- [Разработка под Android] Всё о PendingIntents (перевод)
- [Программирование, Symfony] Symfony Messenger: объединение сообщений в пакеты (перевод)
- [Реверс-инжиниринг] OLE, COM, COM+
- [Java] Способы логирования Hibernate
- [Информационная безопасность, Сетевые технологии] Построение карты сети
- [JavaScript, Программирование, Интернет вещей] Пять причин выбрать JavaScript для IoT-проекта (перевод)
Теги для поиска: #_java, #_testirovanie_vebservisov (Тестирование веб-сервисов), #_avtomatizatsija_testirovanija (автоматизация тестирования), #_java, #_selenium, #_bitye_ssylki (битые ссылки), #_testing, #_maven, #_blog_kompanii_otus (
Блог компании OTUS
), #_java, #_testirovanie_vebservisov (
Тестирование веб-сервисов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:32
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Когда вам нужно проверить все ссылки в вашем проекте, вы можете сделать это с помощью Postman или любого другого инструмента тестирования API, но есть более простой способ. Когда вы используете инструменты тестирования API, вам нужно написать все соединения ссылок один за другим, а когда ссылки меняются, вам нужно снова редактировать все тесты один за другим.Теперь с помощью этого java-кода вы можете проверить все ссылки. Эти ссылки могут быть ссылками pdf, изображения, видео или фотографии.Шаг 1: В HTML мы связываем ссылки с помощью этого кода: <a href="Adress"></a> это означает, что мы должны собрать все ссылки на веб-странице на основе <a>. Для этого мы используем этот код: List<WebElement> allLinks = driver.findElements(By.tagName(LINKS_TAG)); String urlLink = link.getAttribute(LINKS_ATTRIBUTE); URL url = new URL(urlLink); HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection(); httpURLConnect.setConnectTimeout(5000); httpURLConnect.connect();
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; public class FindAllBrokenLinks { public final String DRIVER_PATH = "Drivers/chromedriver"; public final String DRIVER_TYPE = "webdriver.chrome.driver"; public WebDriver driver; public final String BASE_URL = "https://www.bbc.com/"; public final String LINKS_ATTRIBUTE = "href"; public final String LINKS_TAG = "a"; @BeforeTest public void beforeTest(){ ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-notifications","--ignore-certificate-errors","--disable-extensions"); System.setProperty(DRIVER_TYPE,DRIVER_PATH); driver = new ChromeDriver(options); driver.manage().window().maximize(); driver.get(BASE_URL); } @Test public void FindAllBrokenLinks() throws Exception{ List<WebElement> allLinks = driver.findElements(By.tagName(LINKS_TAG)); for(WebElement link:allLinks){ try { String urlLink = link.getAttribute(LINKS_ATTRIBUTE); URL url = new URL(urlLink); HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection(); httpURLConnect.setConnectTimeout(5000); httpURLConnect.connect(); if(httpURLConnect.getResponseCode()>=400) { System.out.println(urlLink+" - "+httpURLConnect.getResponseMessage()+"is a broken link"); } else{ System.out.println(urlLink+" - "+httpURLConnect.getResponseMessage()); } }catch (Exception e) { } } } @AfterClass public void CloseDriver(){ driver.close(); } } Перевод подготовлен в рамках набора учащихся на курс "Java QA Automation Engineer". Если вам интересно узнать о курсе подробнее, а также познакомиться с преподавателем, приглашаем на день открытых дверей онлайн. =========== Источник: habr.com =========== =========== Автор оригинала: Leyla GORMEL ===========Похожие новости:
Блог компании OTUS ), #_java, #_testirovanie_vebservisov ( Тестирование веб-сервисов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:32
Часовой пояс: UTC + 5