Lorsque vous devez tester tous les liens de votre projet, vous pouvez le faire à l'aide de Postman ou de tout autre outil de test d'API, mais il existe un moyen plus simple. Lorsque vous utilisez des outils de test d'API, vous devez écrire toutes les connexions de liens une par une, et lorsque les liens changent, vous devez à nouveau modifier tous les tests un par un.
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 — OK
https://www.bbc.com/worklife — OK
https://www.bbc.com/future — OK
https://www.bbc.com/culture — OK
https://www.bbc.com/culture/music — OK
http://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". , , .