selenium 자동화를 구현하면 가장 많이 사용하는게 find_element 일텐데요.
find_element 코드를 사용할 때 ID, class, xpath, link_text, name 등 다양하게 사용할텐데 각각의 속도 차이가 있는지 궁금해졌습니다.
(자동화에서 코드 실행 시간을 줄일 수 있으면 최고!!)
selenium locator 설명을 보면 xpath를 사용할 때 속도가 느려지는 단점이 있다고 설명이 되어 있는데 실제로 차이가 많이 나는지 확인을 해보고 싶어서 간단하게 테스트를 해보았습니다.
https://www.selenium.dev/documentation/test_practices/encouraged/locators/
샘플 URL은 다음 메인홈 (https://daum.net) 을 선택하였고
샘플 시나리오는 아래와 같이 선택하였습니다.
(class명이 있고 최대한 단순하게 링크를 이동하는 방식들로 선정)
1. 연예, 부동산 등 각 뉴스 카테고리 이동
2. 검색어 입력 후 검색
3. 회원가입, 로그인 영역 관련 링크 이동
모든 동작으로 링크를 이동한 후에는 driver.back() 코드를 사용하였습니다.
동일한 시나리오를 3번 반복해서 실행시간을 콘솔에 출력하는 형태로 작성하였습니다.
실행시간을 측정하기 위해 time().time() 코드를 사용하였습니다.
start = time.time()
print("실행시간 :" + str(time.time() - start))
class_name과 xpath로만 사용한 코드 실행 시간 결과는 아래와 같습니다.
실행시간 | class_name | xpath |
1-1 | 14.29초 | 14.43초 |
1-2 | 11.34초 | 11.83초 |
1-3 | 11.23초 | 11.98초 |
2-1 | 13.98초 | 16.10초 |
2-2 | 12.16초 | 11.99초 |
2-3 | 10.55초 | 11.09초 |
3-1 | 13.88초 | 14.72초 |
3-2 | 11.00초 | 11.84초 |
3-3 | 11.59초 | 11.27초 |
class_name 평균시간: 11.11초
xpath 평균시간: 12.80초
9번 반복 체크 결과 class_name과 xpath 평균 시간 차이는 약 1초 정도 발생하였습니다.
적은 반복 횟수와 간단한 코드이지만 코드가 길어질수록 차이가 더 많이 발생할 것으로 추측할 수 있었습니다.
결국 코드에서 xpath는 해당 코드가 어느 부분인지 확인할 수 없는 단점과 selenium 가이드에서 간결하고 읽기 쉽게 유지하는 걸 권장하고 있기 떄문에 xpath 외 다른 locator를 사용하여 코드를 구현하는걸 추천드립니다.
# class_name
driver.find_element(By.CLASS_NAME, 'txt_pctop.link_cafe').click()
driver.back()
driver.find_element(By.CLASS_NAME, 'txt_pctop.link_news').click()
driver.back()
driver.find_element(By.CLASS_NAME, 'txt_pctop.link_stock').click()
# xpath
driver.find_element(By.XPATH, '//*[@id="daumHead"]/div[2]/div/div[1]/ul/li[1]/a').click()
driver.back()
driver.find_element(By.XPATH, '//*[@id="daumHead"]/div[2]/div/div[1]/ul/li[3]/a').click()
driver.back()
driver.find_element(By.XPATH, '//*[@id="daumHead"]/div[2]/div/div[1]/ul/li[5]/a').click()
driver.back()
xpath의 경우 검색 범위가 넓고 어떤 element인지 확인이 어렵다.
'자동화 > Selenium' 카테고리의 다른 글
업비트 코인 시가총액 및 거래대금 목록 자동화로 엑셀에 저장하기 (0) | 2023.02.22 |
---|---|
네이버 주택담보대출 금리 정보 목록 자동화로 한번에 확인하기 (0) | 2023.02.13 |
Selenium Python 웹 자동화시 사용하는 스크롤 동작 유형 4가지 (0) | 2023.02.07 |
주요 서점 주간 베스트 20위까지 데이터 엑셀에 자동화로 저장하기 (0) | 2023.01.29 |
버거킹 설문조사 exe 실행파일로 자동화 사용하기 (0) | 2023.01.14 |