Python selenium 의 이 세 가지 대기 방식 은 반드시!

5036 단어 selenium대기 모드
1.왜 기다 림 을 사용 합 니까?
자동화 테스트 스 크 립 트 가 실행 되 는 과정 에서 webdriver 가 브 라 우 저 를 조작 할 때 요소 의 포 지 셔 닝 에 시간 을 초과 합 니 다.
시간
이 시간 내 에 요 소 를 찾 지 못 하면 이상 을 던 져 스 크 립 트 실행 을 중단 합 니 다.
웹 지연 이나 브 라 우 저 카드 로 인 한 우연 한 실 패 를 피 하려 면 스 크 립 트 에 대기 모드 를 설정 할 수 있 습 니 다.
在这里插入图片描述
2.자주 사용 하 는 세 가지 대기 방식
강제 대기
암시 적 기다 림
기다 림 을 표시 합 니 다3.강제 대기
time 모듈 의 sleep 방법 을 이용 하여 가장 간단 하고 거 친 대기 방법 을 실현 합 니 다.
브 라 우 저 를 불 러 오 든 말 든 3 초,3 초 를 기 다 려 야 합 니 다.다음 코드 를 계속 실행 하 십시오.

# -*- coding: utf-8 -*-
# @Author :      
import time
from selenium import webdriver
driver = webdriver.Chrome()
#       
driver.get(r'https://www.baidu.com/')
#     3 
time.sleep(3)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
#   
driver.quit()
폐단
이러한 대기 방법 을 사용 하 는 것 을 권장 하지 않 습 니 다.코드 의 실행 속도 에 심각 한 영향 을 줍 니 다.
4.암시 적 대기
implicitly_wait()방법 은 페이지 로 딩 이 완료 되 기 를 기다 리 는 데 사 용 됩 니 다.
완료 하면 다음 단계 실행
암시 적 기다 림 은 한 번 만 설명 하고 브 라 우 저 를 열 면 설명 합 니 다.
성명 후 전체 drvier 의 생명 주기 에 효과 가 있 으 며,이후 에는 중복 성명 을 하지 않 아 도 됩 니 다.

# -*- coding: utf-8 -*-
# @Author :      
import time
from selenium import webdriver
driver = webdriver.Chrome()
#       
driver.get(r'https://www.baidu.com/')
#     5 
driver.implicitly_wait(5)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
#   
driver.quit()
폐단
프로그램 은 시간 이 초 과 될 때 까지 모든 페이지 를 불 러 올 때 까지 기다 릴 것 입 니 다.
때때로 내 가 필요 로 하 는 그 요 소 는 이미 불 러 오 는 것 이 완성 되 었 다.단지 페이지 에 다른 요소 가 불 러 오 는 것 이 매우 느 릴 뿐이다.나 는 여전히 페이지 를 기 다 려 야 한다.
면 을 모두 불 러 와 야 다음 단 계 를 실행 할 수 있 습 니 다.
5.대기 시간 표시
WebDriverWait,이러한 종류의 until()과 untilnot()방법 은 판단 조건 에 따라 유연 하 게 기다 릴 수 있 습 니 다.
프로그램 이 xx 초 마다 한 번 씩 보고 조건 이 성립 되면 다음 단 계 를 실행 한 다 는 뜻 이다.
그렇지 않 으 면 설정 한 시간 을 초과 할 때 까지 기 다 렸 다가 TimeoutException 을 던 집 니 다.
대기 시간 을 표시 하려 면 모든 대기 요소 앞에서 설명 해 야 합 니 다.

#     
from selenium.webdriver.support.wait import WebDriverWait
네 개의 매개 변수
driver:브 라 우 저 드라이버
timeout:대기 시간
poll_frequency:검 측 간격,기본 0.5s
ignored_exceptions:시간 초과 후의 이상 정보,기본 값 NoSuchElement Exception
expected_conditions
expected_conditions 는 selenium 의 모듈 입 니 다.
판단 에 사용 할 수 있 는 일련의 조건 을 포함 하고 있다.
웹 페이지 에 요소 가 존재 하 는 지,클릭 할 수 있 는 지 등 을 판단 할 수 있 으 며,일반적으로 단언 이나 WebDriverWait 와 함께 사용 합 니 다.

from selenium.webdriver.support import expected_conditions as EC

# -*- coding: utf-8 -*-
# @Author :      
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#   10s,            ,          ,    10s      
#         ,            locator, (By.ID, ‘kw')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,
"kw"))).send_keys("    ")
6.모듈 용법 집합

#       title        ,     
WebDriverWait(driver,10).until(EC.title_is("    ,    "))
#       title         ,     
WebDriverWait(driver,10).until(EC.title_contains('new'))
#       url        ,     
WebDriverWait(driver,10).until(EC.url_contains('https://www.baidu.com'))
#       url         ,     
WebDriverWait(driver,10).until(EC.url_contains('baidu'))
#       url              ,     
WebDriverWait(driver,10).until(EC.url_matches('.+baidu.+'))
#        ,         ,      
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
#        ,      
WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(By.ID,'kw'))
)
#            ,     
WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.NAME,'tj_trn
ews'),'  '))
#   frame    switch  ,      ,  True  switch  
WebDriverWait(driver,10,).until(EC.frame_to_be_available_and_switch_to_it(By.xpa
th,'//iframe'))
#                 ,           ,    False
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME,'tj_trnews'))
)
#           ,        
WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.
xpath,'//input[@type="checkbox"]')))
#         alert,       alert   alert   
WebDriverWait(driver,10).until(EC.alert_is_present())
파 이 썬 셀 레 니 엄 에 관 한 이 세 가지 대기 방식 은 반드시!의 글 은 여기까지 소개 되 었 습 니 다.더 많은 selenium 대기 방식 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기