三大等待

等待选择:

-1、隐性等待:全局设置,等待查找元素, 
-2、显性等待:等待元素可以被点击,可见,
-3、强制等待:多个系统交互的地方。(上传文件/执行js代码)

1、强制等待  

强制等待, time.sleep(), 时间不好控制。
import time     
    time.sleep(1)

2、隐性等待

- 隐性等待
- 全局设置,
- 设置超时时间,超过超时时间:NoSuchElementException
- 只能用来等待元素
from selenium import webdriver
# 设置全局等待时间
driver.implicitly_wait(5)
driver.get("http://www.baidu.com")  # 静态页面加载完成
driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]').click()
# 当你的操作带来了页面的变化 ,请一定要等待。

3、显性等待   

- 显性等待如果找不到元素
- 报错,TimeoutException

 一般的条件:

  presence_of_element_located  等待某个元素出现
visibility_of_element_located 某个元素是否可见
element_to_be_clickable 某个元素是否可被点击
一般步骤1、设置定时器 2、设置满足条件
from  selenium.webdriver.support.wait import  WebDriverWait
from selenium.webdriver.support import expected_conditions #预期条件
#设置定时器   每隔0.5秒去查看 元素是否出现,共检查5秒
wait = WebDriverWait(driver,5,poll_frequency=0.5)

#设置满足的条件
"""presence_of_element_located 等待某个元素出现
visibility_of_element_located 某个元素是否可见
element_to_be_clickable 某个元素是否可被点击
"""
locator = ("xpath",'//*[@id="1"]/h3/a')
ele = wait.until(
expected_conditions.element_to_be_clickable(
locator=locator))
原文地址:https://www.cnblogs.com/XXQQ123/p/11268191.html