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"
# 문구 출력
'selenium' 카테고리의 다른 글
[Selenium] Iframe Switch (0) | 2020.01.13 |
---|---|
[Selenium] 크롤링을 활용한 네이버 상단메뉴 자동화테스트 (0) | 2020.01.12 |
[Selenium] 활성 Tab 변경 (0) | 2020.01.11 |
[Selenium] Web 해상도 조절 (0) | 2020.01.11 |
[Selenium] 현재 화면 Capture (0) | 2020.01.08 |