元素等待学习

"""
元素三大等待
1、强制等待
2、显性等待
3、隐性等待
显性等待、隐性等待又称为智能等待
"""
import time

from selenium import webdriver
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

#初始化chrome对象
driver=webdriver.Chrome()

#打开百度
driver.get("https://www.baidu.com")
# #最大化窗口
# driver.maximize_window()

#定位输入框
input_ele=driver.find_element_by_id("kw")

#在输入框输入要搜索的信息,比如淘宝
input_ele.send_keys("淘宝")

#定位搜索按钮
search_ele=driver.find_element_by_xpath("//*[@id='su']")

#点击搜索
search_ele.click()

"""强制等待"""
# #设置强制等待时间
# time.sleep(2)

"""隐性等待,若超过设置的超时时间还未找到该元素就会报“NoSuchElementException”,如果在超时时间内找到元素则可以直接操作元素"""
#设置隐性等待,里面的20是超时时间
# driver.implicitly_wait(20)

#定位淘宝官网
# ele1=driver.find_element_by_xpath("//*[@class='t']/a[1]")
# ele1.click()


"""显性等待
1、先导入from selenium.webdriver.support.wait import WebDriverWait
2、设置定时器(超时时间、轮循时间)
3、设置结束定时器需满足的条件
"""
#设置显性等待
#设置定时器,超时时间5s,轮循时间0.5s
wait=WebDriverWait(driver,5,poll_frequency=0.5)

#设置满足的条件,locator是个元组
loca=('xpath',"//*[@class='t']/a[1]")
#通过元素是否可以点击来判断
# ele=wait.until(expected_conditions.element_to_be_clickable(locator=loca))
#通过元素是否可见来判断
# ele=wait.until(expected_conditions.visibility_of_element_located(locator=loca))
#通过元素是否出现来判断
ele=wait.until(expected_conditions.presence_of_element_located(locator=loca))
print(ele.text)
ele.click()

总结:
1、智能等待(给你一个超时时间,如果在超时时间之内能够找到,就直接返回元素;如果超时,报错)包括隐性等待与显性等待
---隐性等待
       - 全局设置
       - 设置超时时间,超过超时时间报异常:NoSuchElementException
       - 只能用来等待元素    
---显性等待 
       - 等待某个可以被点击
       - 等待某个元素可见 
       - 等待某个窗口被打开
       - 显性等待不是全局的,每次等待都要单独设置
       - 显性等待几个重要的条件
            - presence_of_element_located(locator) 元素是否出现
            - visibility_of_element_located(locator)  元素是否可见
            - element_to_be_clickable(locator)  元素是否可以被点击
       - 显性等待如果找不到元素,报错:TimeoutException
  2、 等待方式的选择

若需要全局设置,或者等待查找元素,则选择隐形等待;

若需要等待元素可以被点击或者可见,则选择显性等待;

若是多个系统交互,则选择强制等待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值