Traceback (most recent call last):
File "C:/ws/Selenium-Framework-master/testsuites/TestRunner.py", line 48, in <module>
runner.run(createsuite1())
...
AttributeError: '_TestResult' object has no attribute 'outputBuffer'
이 오류는 주로 HTMLTestRunner 라이브러리와 Python 버전 간의 호환성 문제에서 비롯된다. 특히 오래된 HTMLTestRunner.py 파일을 Python 2.7 환경에서 사용할 때 자주 발생하며, outputBuffer 속성이 정의되지 않아 발생한다. 이 문제는 HTMLTestRunner를 최신 버전으로 교체하거나, 파이썬 3 전용 버전을 사용함으로써 해결할 수 있다.
그러나 위 트레이스백만으로는 핵심 원인을 파악하기 어려우므로, 개별 테스트 케이스를 분리하여 실행해 보는 것이 유용하다. 이 과정에서 다음과 같은 WebDriver 예외가 추가로 노출되었다.
WebDriverException: Message: unknown error: cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
(Session info: chrome=66.0.3359.181)
(Driver info: chromedriver=2.29.461591 ..., platform=Windows NT 6.1.7601 SP1 x86_64)
이 메시지는 Chrome 브라우저와 ChromeDriver 간의버전 호환성 문제를 나타낸다. 위 로그에서 브라우저 버전은 66.0.3359.181인 반면, 사용 중인 ChromeDriver는 2.29 버전이다. 이 버전 조합은 공식적으로 지원되지 않으며, Chrome 63 이상에서는 동작하지 않는다.
해결 방법
- 현재 Chrome 브라우저 버전 확인: 크롬 주소창에
chrome://settings/help입력 후 버전 확인. - 호환되는 ChromeDriver 다운로드: 공식 사이트에서 브라우저 버전과 일치하는 드라이버를 선택.
- 기존 드라이버 파일 교체: 코드에서 지정한 경로에 있는 오래된
chromedriver.exe를 새 버전으로 대체. - 환경 변수 경로 점검: 시스템 PATH에 등록된 드라이버도 필요 시 업데이트.
예를 들어, 아래처럼 브라우저 엔진 초기화 코드에서 드라이버 경로를 명시적으로 지정하고 있다면:
def open_browser():
driver_path = "C:/tools/chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path)
driver.maximize_window()
return driver
이때 C:/tools/ 경로 내 파일이 오래된 버전이라면, 아무리 시스템 PATH에 올바른 드라이버가 있어도 무시되고 해당 위치의 파일이 우선 사용된다. 따라서 반드시 코드에서 참조하는 경로의 드라이버를 업데이트해야 한다.
최종적으로 올바른 버전의 ChromeDriver로 교체하면, maximize_window() 호출 시 발생하던 확장 프로그 페이지 로딩 오류가 사라지고, 정상적으로 브라우저 창이 열리며 테스트가 진행된다.