selenium-python-隐式等待与显示等待

页面等待

隐式等待:

调用driver.implicitly_wait 那么在获取不可用的元素之前,会等待10秒中的时间

driver = webdriver.Chrome()

driver.implicitly_wait(10)

driver.get(‘https:\\www.baidu.com’)

显示等待:

显示等待是表明某个条件成立才执行获取元素的才做、也可以等待的时候指定一个最大的时间,

如果超过这个时间那么就会抛出一个异常(exceptions.TimeoutException)。

显示等待是应该使用 selenium.webdriver.support.excepted_conditions期望的条件和

selenium.webdriver.support.ui.webDriverWait 来配合完成。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait  # 显示等待
# 设置等待执行语句
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# driver.implicitly_wait(10)  # 隐式等待
driver.get(r'http:\\www.douban.com')

try:
    element = WebDriverWait(driver, 10).until(
        # 位于...位置存在某个元素
        # EC.presence_of_element_located((By.ID, 'form_email'))  # 必须是元组
        EC.text_to_be_present_in_element(
            (By.XPATH, '//div[@class="main"]/div[@class="mod"]/h2[1]'),
            '热点内容  • • • • • •  ( 更多 )')
    )
    # element.send_keys('python')
    print(element)
finally:
    driver.quit()

结束等待:

防止页面加载时间过长,但是不是每个人都能应用成果!跟每个人的电脑的chrome 与 webdriver 想关

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait  # 显示等待
from selenium.webdriver.support import expected_conditions as EC  # 设置等待执行语句
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from time import sleep
url = 'http://tieba.baidu.com/p/5923312469'
options = webdriver.ChromeOptions()
options.add_extension(r'D:\python_demo\AdBlock_v3.10.0.crx')  # 添加插件
driver = webdriver.Chrome(chrome_options=options)
driver.set_page_load_timeout(10)
try:
    driver.get(url)
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'core_title_txt  '))
    )
    print(driver.page_source)
except TimeoutException as e:
    print('错误1')
    print(e)
    print(driver.page_source)

 

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pylemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值