隐式等待是在尝试发现某个元素的时候,如果没能立刻发现,就等待固定长度的时间。默认设置是0秒。一旦设置了隐式等待时间,它的作用范围就是Webdriver对象实例的整个生命周期。
#coding=UTF-8
from selenium import webdriver
import time
if __name__ == '__main__':
driver = webdriver.Firefox(executable_path='D:\Mozilla Firefox')
driver.maximize_window()
driver.get('file:///E:/selenium_study/demo.html')
time.sleep(2)
driver.implicitly_wait(10)
#全局最长等待时长
#对于所有的findelement方法生效,每一个findelement方法在查询元素的时候,每0.5S判断一次。
# 判断是不是正确查询到元素了。没有发生异常。最长查10S,20次还没有查询完抛异常
driver.find_element_by_class_name('wait').click()
# time.sleep(3)
print driver.find_element_by_class_name('rad').text
智能等待
#coding=UTF-8
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
if __name__ == '__main__':
driver = webdriver.Firefox(executable_path='D:\Mozilla Firefox')
driver.maximize_window()
driver.get('file:///E:/selenium_study/demo.html')
time.sleep(2)
driver.find_element_by_xpath("//input[@class='wait']").click()
#等待wait。。。until,
# WebDriverWait类,driver,最长等待时间,多久询问一次。until,直到该元素出现为止
element = WebDriverWait(driver,10,0.5).until(
#等到元素可以被定位
EC.visibility_of_element_located((By.XPATH,"//div[@id='display']/div"))
)
#EC当某个自定义元素出现
print element.text