4.7)设置元素等待
四、设置元素等待
# -*- coding:utf-8 -*-
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditionsas EC
from time import ctime, sleep
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.baidu.com/")
# 显性等待
# 方法一
print(ctime())
element = WebDriverWait(driver, 5, 0.5).until(
EC.visibility_of_element_located((By.ID, 'kw'))
)
element.send_keys('selenium')
print(ctime())
driver.quit()
# 方法二
print(ctime())
for iin range(5):
try:
ele = driver.find_element_by_id("kw22")
if ele.is_displayed():
break
except:
pass
sleep(1)
else:
print("time out")
print(ctime())
driver.quit()
# 隐式等待
driver.implicitly_wait(10)# 等待所有需要等待的元素,直到等待10s后,仍找不到元素会报错,不执行下一步。
try:
print(ctime())
driver.find_element_by_id('kw22').send_keys('selenium')
except NoSuchElementExceptionas e:
print(e)
finally:
print(ctime())
driver.quit()