Selenium基础:时间等待 10
1、强制等待 time.sleep()
指定一个固定的线程休眠时间
#-*-coding:utf-8-*- from datetime import datetime import time print(datatime.now()) #等待5S time.sleep(5) print(datatime.now())
2、隐式等待 implicitly_wait(time)
全局的针对所有元素设置的等待时间,是对driver的一种隐式等待
driver.implicitly_wait(10) driver.find_element_by_id('id').click()
3、显式等待 webdriverwait()
WebDriverWait()...until() true进行下一步 false循环 直到超过设置时间,抛出异常
WebDriverWait()...until_not() false进行下一步 true循环 直到超过设置时间,抛出异常
#-*-coding:utf-8-*- from selenium import webdriver from selenium.webdriver.common.by import By #导入webdriverwait from selenium.webdriver.support.ui import WebDriverWait #导入expected_conditions类 from selenium.webdriver.support import expected_conditions driver = webdriver.Chrome() driver.get('url') #显式等待10s,每隔0.5s尝试一次。默认为0.5s,所以也可不用赋值 WebDriverWait(driver,10,0.5).until(expected_conditions.presence_of_element_located((By.ID, 'search'))) driver.quit()
expected_conditions类中常见页面元素判断方法:
- title_is:判断当前页面title是否等于预期结果
- title_contains:判断当前页面title是否包含预期字符串
- presence_of_element_located:判断元素是否被加到dom树下,该元素不一定可见
- visiblity_of_element_located:判断元素是否可见,并且元素高和宽都不为0
- presence_of_all_element_located:判断至少有一个元素被加到dom树下
- text_to_be_present_in_element:判断元素中text文本是否包含预期字符串
- text_to_be_present_in_element_value:判断元素中value属性是否包含预期字符串
- frame_to_be_availabe_and_switch_to_it:判断frame是否可以switch进去,可以返回true并进去,否则false
- invisiblity_of_element_located:判断元素是否不存在于dom树下或不可见
- element_to_be_clickable:判断元素可见并可操作
- element_to_be_selected:判断元素可见并可选中
- element_selection_state_to_be:判断元素选中状态是否符合预期
- alert_is_present:判断页面上是否存在alert