파이썬(Python)

[ 크롤링-Selenium ] selenium is_displayed(), 화면에 보이는지 여부 확인

카루루1007 2022. 11. 19. 15:49
728x90
반응형
SMALL

셀레니움의  is_displayed() 는 해당 요소가 화면에 보이는지를

확인하는 역할을 합니다.

화면에 보이면 True를 반환하고

화면에 보이지 않으면 False를 반환합니다.

 

아래 그림은 다음의 검색창입니다.

해당 부분의 [ class ]는 [ box_search ]입니다.

i = driver.find_element(By.CLASS_NAME, "box_search").is_displayed()
print(i)

위 코드를 실행하면 True가 반환됩니다.

 

다음은 아래 그림과 같이 [ class ]가 [ screen_out ]인 요소를 확인해 보겠습니다.

i = driver.find_element(By.CLASS_NAME, "screen_out").is_displayed()
print(i)

위 코드를 실행하면 False를 반환합니다.

즉, 해당 요소는 화면에 표시되는 요소는 아니라는 이야기입니다.

 

있지 않은 클래스 이름을 사용하게 되면 오류가 발생됩니다.

i = driver.find_element(By.CLASS_NAME, "sfasf2324324").is_displayed()
print(i)

이런식으로 사용하면 오류가 발생됩니다.

 

반응형

하나의 예를 더 들어보겠습니다.

W3Schools Online Web Tutorials

 

W3Schools Free Online Web Tutorials

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

위 사이트를 예시로 보겠습니다.

위 사이트는 아래와 같이 작동합니다.

맨 위에 위와 같이 메뉴가 있습니다.

Tutorials 을 클릭하면 아래와 같이 메뉴가 추가적으로 나타납니다.

여기서 [ HTML and CSS ]를 가지고 확인해 보겠습니다.

 [ HTML and CSS ] 부분의 class 이름은 [ w3-margin-top ]입니다.

※ [ w3-margin-top ]이름을 가진 클래스는 여러개가 있습니다.  첫번째로 보이는 것이 보라색 부분입니다.

 

driver.maximize_window()

위 코드를 추가하여 윈도우를 최대화 하고 테스트 하겠습니다.

driver.get(url)
driver.maximize_window()
time.sleep(3)

i = driver.find_element(By.CLASS_NAME, "w3-margin-top").is_displayed()
print(i)

위 코드를 실행하면 False가 반환됩니다.

하지만 [ Tutorials ]를 클릭하는 코드를 작성하고 실행하면 True가 반환됩니다.

driver.get(url)
driver.maximize_window()
time.sleep(3)

driver.find_element(By.XPATH, '//*[@id="navbtn_tutorials"]').click()
time.sleep(3)

i = driver.find_element(By.CLASS_NAME, "w3-margin-top").is_displayed()
print(i)

 

위 코드의 빨간색 부분이 [ Tutorials ]를 클릭하는 코드입니다.

 

728x90
반응형
LIST