본문으로 바로가기

[Selenium] Try/Except를 이용한 예외처리

category selenium 2020. 1. 12. 11:47
728x90
driver.find_element_by_partial_link_text("TEST").click()

위의 TEST라는 항목이 존재하지 않을 경우 코드가 그 다음으로 흘러가지 못하고 중단되는것을 볼 수 있음

이때 예외처리를 하여 TEST가 존재할 경우에는 해당 과정을 수행하고 아닐 경우에는 다른 행동을 취할 수 있게 할 수 있는데 이때 사용하는 것이 try/except 임

 

1. 기본 포멧

try:
	#정상일 경우 수행할 행위
except:
	#비정상일 경우 수행할 행위

2. 예시

    try:
    	#TEST가 존재할 경우 Console log 파일과 capture를 수행함
        driver.find_element_by_partial_link_text("TEST").click()
        time.sleep(5)
        Path = os.path.basename(inspect.getfile(inspect.currentframe()))
        filename = Path.split('.')
        savefile.console_logfile(driver, filename[0])
        savefile.capture(driver, filename[0])
    except Exception as error:
    	print(error) #error종류 출력
    	#TEST가 존재하지 않을 경우 Capture파일만 생성함
        savefile.capture(driver, filename[0]+'_ERROR')

* 오류 종류 : https://monkeycow.tistory.com/91

 

자동화 시 오류종류

Exception : 모든 에러를 잡음 UnexpectedAlertPresentException : 알럿 발생 시 발생 NoSuchElementException : 엘리먼트가 없음 ElementNotSelectableException : 엘리먼트가 선택 가능한 상태가 아님 ElementNotVisibleException :

monkeycow.tistory.com

 

3. 특정 에러는 스킵하고자 할때 pass 입력 시 다음으로 넘어감

    try:
        driver.find_element_by_partial_link_text("TEST").click()
    except NoSuchElementException:
    	print("error") 
    except UnexpectedAlertPresentException:
    	pass

 

4. 자동화에서 자주 쓰는 방식

    try:
        driver.find_element_by_partial_link_text("TEST").click()
        if self.driver.current_url == test_url:
        	assert true
        else
        	#assert false를 주어서 AssertionError 로 빠지도록 유도
        	assert false
    except NoSuchElementException:
    	print("NoSuchElementException") 
    except AssertionError:
    	print("AssertionError")
        
    # 이렇게 구성 할 경우 drvier.find_element_by_partial_link_text 에서 오류 발생 시
    # NoSuchElementException로 이동하여 "NoSuchElementException" 문구 출력
    # self.driver.current_url != test_url 일 경우 AssertionError로 이동하여 "AssertionError"
    # 문구 출력