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

Selenium_isDisplayed(), isSelected(), isEnabled()

by Testengineer 2021. 1. 23.
반응형

안녕하세요!

오늘은 오랜만에 웹 자동화에 관한 selenium 포스팅에 대해 작성해보려고 합니다. 요즘 자동화를 자체적으로 공부 중인데 헷갈리는 메소드가 있어 정리하면서, 포스팅을 해보겠습니다.

오늘 제가 다룰 셀레니움 메소드는 isDisplayed()와 isSelected(), isEnabled() 세 개입니다.

세 개의 메소드가 비슷비슷한 의미를 갖고 있지만 역할이 조금씩 달라서 구분 방법에 대해 알려드리겠습니다.

 

먼저 isDisplayed() 메소드입니다.

isDisplayed( )

웹 요소의 페이지에서 표시되는지(display) 여부를 확인하는 데 사용됩니다. 활성화되었을 경우에는 true, 비활성화되어있을 경우에는 false를 반환합니다.

 

isSelected( )

웹 페이지에서 element가 선택되어있는지를 확인하는 데 사용됩니다. 라디오 버튼, 체크박스, 드롭다운과 같은 형태에서만 사용이 가능합니다. 활성화되었을 경우에는 true, 비활성화되어있을 경우에는 false를 반환합니다.

 

isEnabled( )

웹 요소가 활성화 또는 비활성화되었을 때 true, false로 값을 반환을 해 알려줍니다. 활성화되었을 경우에는 경우에는 true, 비활성화되어있을 경우에는 false를 반환합니다.

 

우선 여기까지가 세 메소드를 비교한 정의입니다. 다만 제가 헷갈렸던 점은 isEnabled( )의 사용을 통해 false값을 예상했지만, 실제 결과값은 true가 나오는 경우였습니다.

바로 버튼에 disabled 값이 있어야만 해당 isEnabled() 메서드 사용이 가능합니다. disabled에 해당하는 값이 없다면 위의 메소드를 사용해도 항상 True값을 반환한다는 점을 참고하셔서 개발자 도구를 열어 확인해보시고, 상황에 맞는 메소드를 사용하시길 바랍니다.

 

 

일반 웹 페이지에서는 isEnabled() 메소드를 사용해보기가 어려워, 테스트용으로 사용해보시길 원하신다면, 아래 페이지에서 사용해볼 수 있습니다.

사용한 샘플 테스트 페이지 : www.testdiary.com/training/selenium/selenium-test-page/

 

Selenium Test Page - Test Diary

This page is a test page for users of Test diary to run Selenium Tests on. Selenium Rest Api  Java               PHP Save Test Diary Test Diary Selenium Learning Blue ShirtRed ShirtYellow Shirt Blue SkirtRed SkirtYellow Skirt   First Name Last Nam

www.testdiary.com

참고 웹사이트 : www.testdiary.com/blog/2016/04/17/fifth-selenium-webdriver-test-checkboxes-radio-buttons/

 

Selenium IsDisplayed, isSelected, isEnabled

Selenium IsDisplayed, isSelected,isEnabled on Check boxes, RadioButtons

www.testdiary.com

 

저는 대략적으로 true, false 예상 값을 생각해보고 테스트해보았는데요. 아래는 isDisplayed(), isSelected(), isEnabled() 메소드를 이용해서 자바언어를 이용해 콘솔 창에 true, false를 확인할 수 있게 만든 테스트 코드입니다.

[TEST CODE]

package example;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class sample03 {
	public WebDriver driver;
	   
	@BeforeClass
	// 테스트 시작 전 셋팅에 관한 코드
	public void setUp() throws Exception{
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\eprtm\\Downloads\\chromedriver_win32\\chromedriver.exe");
		driver = new ChromeDriver();
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
		driver.get("http://www.testdiary.com/training/selenium/selenium-test-page/");
	}
		   
	@Test
	public void test_example() throws Exception{
		// isDisplayed() 사용
		boolean display = driver.findElement(By.xpath("//*[@id=\"demo\"]")).isDisplayed();
		System.out.println("버튼이 있는지 확인: "+display);
		
		
		// isSelected() 사용
		// 체크버튼, 라디오버튼, 드롭다운에서 체크되어진 상태인지 확인하는 용도
		boolean select_false = driver.findElement(By.xpath("//*[@id=\"java1\"]")).isSelected();
		System.out.println("체크되어있는지 확인: "+select_false);
		
		// 버튼 체크함
		driver.findElement(By.xpath("//*[@id=\"java1\"]")).click();
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
		
		// 재확인
		boolean select_true = driver.findElement(By.xpath("//*[@id=\"java1\"]")).isSelected();
		System.out.println("체크되어있는지 확인: "+select_true);
		
		
		//isEnabled() 사용
		WebElement enable = driver.findElement(By.xpath("//*[@id=\"demo\"]"));
		boolean enabled_false = enable.isEnabled();
		System.out.println("활성화되어있는지 확인: "+enabled_false);
		
		
	}
		   
	@AfterClass
	// Test가 끝나고 수행
	public void tearDown() throws Exception{
		// 드라이버 종료
		driver.quit();
	}

}

 

정리를 해보자면,

- isSelected()는 라디오 버튼이나, 체크박스, 드롭다운에서 주로 사용함.

- isEnabled()는 주로 버튼에 사용되고, enabled 또는 disabled 값이 있어야 사용 가능함.

- isDisplayed()는 웹페이지 내에 있는 모든 종류의 요소가 있는지 확인하는 데 사용됨.

이 정도입니다. 

위의 3가지 메소드를 이용해서 가시적으로 확인해야 하는 부분에 자동화를 활용하는데, 도움이 되었으면 좋겠습니다:D

반응형

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

Selenium_Scroll in Java  (0) 2022.08.01
Selenium_Mobile Emulation  (0) 2022.02.02
웹 자동화 Setting 3_TestNG 시작하기  (0) 2020.11.04
웹 자동화 Setting 2_selenium setting  (0) 2020.10.28
웹 자동화 Setting 1 _ jdk 설치  (0) 2020.10.22

댓글