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

本文详细介绍了Selenium中隐式等待和显示等待的使用方法。隐式等待设置后,浏览器在查找不可用元素时会等待指定时间。而显示等待则更加精确,通过设置预期条件来等待特定元素出现。示例代码展示了如何配合使用WebDriverWait和expected_conditions等待特定元素的加载。此外,还提到了如何设置页面加载超时,以防止长时间等待。
摘要由CSDN通过智能技术生成

页面等待

隐式等待:

调用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)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值