일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 테스트 케이스
- testcase
- QA
- testing method
- csts
- 위험 기반 테스트
- Test Case
- test
- agile
- 테스트 설계 기법에 따른 분류
- selenium
- SQA
- RBT
- Python
- risk-based testing
- 파이썬
- 품질
- 비기능테스트
- 테스트케이스
- 테스트
- regression test
- seleium
- Testing
- 셀레니움
- Software life cycle model
- 애자일
- ISTQB
- 자동화
- 유지보수성 테스트
- maintainability test
- Today
- Total
Study_Note
selenium : python 시간대기 명령어 본문
셀레니움에서 대기하는 방법에는 time.sleep(), implicit waits, explicit waits가 있습니다.
time.sleep():
time.sleep()은 코드 실행을 일정 시간동안 멈추는 함수입니다.
이를 사용하여 강제로 대기할 수 있지만, 정확한 대기시간을 보장하지 않습니다.
또한, 대기 시간을 고정적으로 설정해야 하므로 유연성이 떨어집니다.
Implicit Waits:
Implicit Waits는 driver.implicitly_wait()를 사용하여 전체 코드 실행 동안 WebDriver가 일정 기간을 기다리도록 설정하는 것입니다.
이 설정은 전역적으로 적용되며, 웹 요소가 로드되는 데 필요한 최대 시간을 설정할 수 있습니다.
대기시간을 자동으로 처리하므로 유연성이 높아집니다.
그러나 일부 상황에서는 대기시간이 길어지는 등의 문제가 있을 수 있습니다.
Explicit Waits:
Explicit Waits는 특정 웹 요소가 나타날 때까지 기다리는 것입니다.
WebDriverWait 클래스와 expected_conditions 모듈을 사용하여 웹 요소가 특정 조건(예: element_to_be_clickable(), presence_of_element_located())을 충족할 때까지 대기합니다.
이 방법은 유연성이 가장 높으며, 대기시간도 정확하게 조절할 수 있습니다.
그러나 각각의 웹 요소마다 대기시간을 설정해야 하므로 코드 길이가 길어지는 등의 단점이 있을 수 있습니다.
따라서, 강제적인 대기가 필요한 경우 time.sleep()을 사용하고,
대기시간을 일괄적으로 처리하려면 Implicit Waits를 사용하며,
특정 웹 요소가 나타날 때까지 대기해야 하는 경우에는 Explicit Waits를 사용하는 것이 좋습니다.
time.sleep()
time.sleep()은 가장 간단한 대기 방법입니다.
하지만 정확한 대기 시간을 예측하기 어렵고,
불필요한 대기시간을 발생시키거나 대기시간이 부족하여 오류가 발생할 수 있습니다.
아래는 예시 코드입니다.
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# 5초 대기
time.sleep(5)
# 다음 동작 수행
# ...
driver.quit()
Implicit Waits
Implicit Waits는 WebDriver 객체가 요청을 받았을 때 모든 요소를 찾을 때까지 지정된 시간동안 대기하는 것입니다.
이 기능은 전역 설정으로 적용되기 때문에 모든 요청에 적용됩니다.
아래는 예시 코드입니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 최대 10초 대기
driver.get("https://www.example.com")
# ...
driver.quit()
위 코드에서 driver.implicitly_wait(10)은 최대 10초 동안 대기하도록 설정합니다.
driver.get() 등의 요청이 전송될 때 요소가 로드되기까지 최대 10초 대기합니다.
Explicit Waits
Explicit Waits는 명시적으로 원하는 조건이 충족될 때까지 대기하는 것입니다.
이를 위해 WebDriverWait 클래스를 사용합니다.
아래는 예시 코드입니다.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# 특정 요소가 로드될 때까지 최대 10초 대기
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "my_id")))
# 대기 후 요소에 대한 동작 수행
# ...
driver.quit()
위 코드에서 WebDriverWait 클래스를 사용하여 최대 10초 동안 대기하도록 설정합니다.
wait.until() 메소드를 사용하여 EC.presence_of_element_located 조건이 충족될 때까지 대기합니다.
이후 대기 후 요소에 대한 동작을 수행하면 됩니다.
'selenium (with python)' 카테고리의 다른 글
selenium : python , 창 전환 (0) | 2023.04.28 |
---|---|
selenium : python iframe 전환하기 (0) | 2023.04.28 |
selenium python : page scroll (0) | 2023.04.28 |
selenium python : Import, from, as (0) | 2023.04.28 |
Chrome Driver (0) | 2023.04.27 |