본문 바로가기
자동화(Automation)

Selenium_HttpUrlConnection

by Testengineer 2022. 9. 16.
반응형

안녕하세요. 오늘은 selenium에서 url을 검증하는 방법에 대해서 포스팅해보고자 합니다. 자동화를 하다 보면 많이 쓰이는 부분이 url 확인인데요.

보통 웹에서는 depth가 나눠지고 각각마다 url 이동이 많기 때문에, 웹 자동화를 사용하시는 분들이라면 많이들 url 링크가 정상적으로 접속되는가를 확인해보셨으리라 생각합니다.

근데 어떻게 정상적으로 접속되었는가를 확인하는 방법이 테스트하는 방법은 사람마다 다를것 같습니다.

저는 Assert문으로 기대결과와 getCurrentUrl()메소드를 이용해 실제 결과를 비교하는 방법을 사용했었는데요.

뭔가 url이 바뀔때마다 수정이 필요한 방법이라 다른 방법으로 url 페이지가 정상 접속되는지 확인하는 방법에 대해 알아보려고 합니다.

페이지가 정상 접속이 되지 않는 경우 http 상태 코드가 404 페이지로 떠서 페이지를 찾을 수 없거나, 400 코드로 들어오면 잘못된 요청으로 찾을 수 없는 경우 등이 있습니다.

http status code 설명
400 - URL이 올바르지 않아 서버에서 요청을 처리할 수 없음.
- 호스트이름이 잘못되어 서버에서 요청을 처리할 수 없음.
- URL 형식이 잘못되어 서버에서 요청을 처리할 수 없음.
- 서버에서 반환된 응답이 내용이 없고 응답코드가 비어있어 요청을 처리할 수 없음
- HTTP 요청 시간 초과됨.
404 (page not found) 서버에서 페이지를 사용할 수 없음.
403 인증이 필요해서 서버가 요청 이행을 거부함.
410 페이지가 사라진 경우.
408 서버가 요청을 기다리는 시간이 초과됨.
503 서버가 일시적으로 과부하되어 요청을 처리할 수 없음.

 

selenium에서 HttpURLConnection을 이용하면 페이지 상태코드를 확인해서 정상 페이지인지 아닌지를 구분할 수 있습니다.

package Examples;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;

import java.net.HttpURLConnection;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;

import Common.SetUp;

public class example05 extends SetUp {
	
	@Test
	public void Url2() {
		String homePage = "https://www.tistory.com/";
		String url = "";
		HttpURLConnection connection = null;
		
		driver.get(homePage);
		
		//푸터영역 url 확인
		List<WebElement> links = driver.findElements(By.xpath("//ul[@class='list_question']/li/a"));

		Iterator<WebElement> it = links.iterator();

		while(it.hasNext()){
			url = it.next().getAttribute("href");
			System.out.println(url);
			
			
			if(url==null||url.isEmpty()) {
				System.out.println("Url is null or empty");
			}
			
			try {
				connection = (HttpURLConnection)(new URL(url).openConnection());
				connection.setRequestMethod("HEAD");
				connection.connect();
				
				//400 페이지 상태인 경우
				if(connection.getResponseCode() == 400) {
					System.out.println("pagelink is broken");
				}
				
				//404 페이지 상태인 경우
				if(connection.getResponseCode() == 404) {
					System.out.println("page is not found");
				}
				
			}catch(MalformedURLException e) {
				e.printStackTrace();
			}catch(IOException e) {
				e.printStackTrace();
			}
			
		}
		

}

참고사이트 : https://www.browserstack.com/guide/how-to-find-broken-links-in-selenium

참고사이트를 참고해서 코드를 작성해보았습니다. 여러 url을 한번에 빠르게 페이지가 정상인지 확인할 수 있는 방법입니다.

결과 이미지

 

반응형

'자동화(Automation)' 카테고리의 다른 글

appium 자동화 Setting 2(Window환경)  (0) 2024.04.28
appium 자동화 Setting 1(Window 환경)  (1) 2024.03.31
Selenium_Window tab  (0) 2022.09.10
TestNG_실행파일  (0) 2022.09.05
Selenium_Assert&Verify  (0) 2022.08.20

댓글