Python中使用Selenium不等页面加载完全就操作页面元素

在网速慢、页面图片多的(例如电商网站)情况下,Selenium会卡住不继续执行,在这设置隐式/显示等待都是没有用的。

这是因为在Selenium中,页面的默认加载策略为normal,Selenium会等待到页面的所有资源(如HTML、CSS、JavaScript、图片等)都加载完成,然后才会执行后续的操作。

可以通过以下方式设置页面加载策略:

from selenium import webdriver

# 设置页面加载策略,这里使用的是Chrome,使用不同的浏览器的话换成自己用的就行了
options = webdriver.ChromeOptions()
options.page_load_strategy = eager  # 或 'normal' 或 'none'

# 启动浏览器
driver = webdriver.Chrome(options=options)

在上面的代码中,将页面加载策略设置为eager后,Selenium会在文档内容加载完毕后(不等待JavaScript文件和图片的加载)就立即开始执行后续的操作。

再配合各种等待(避免元素还没加载出来动作就已经执行),来实现不等页面加载完全就操作页面元素。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python使用Selenium等待页面加载是非常重要的,因为有时候页面加载需要一定的时间,如果没有等待页面加载完成就进行后续操作,可能会导致元素定位失败或者获取到的数据不准确。 Selenium提供了多种等待页面加载的方法,下面是一些常用的等待方式: 1. 隐式等待(Implicit Wait):通过设置一个全局的等待时间,在这个时间内,Selenium等待页面加载完成。如果在规定时间内页面加载完成,则立即执行后续操作;如果超过规定时间页面还未加载完成,则抛出异常。可以使用`driver.implicitly_wait(time_to_wait)`来设置隐式等待时间。 2. 显式等待(Explicit Wait):通过指定某个条件,等待满足条件后再执行后续操作。可以使用`WebDriverWait`类结合`expected_conditions`模块来实现显式等待。例如,可以使用`presence_of_element_located`方法来等待某个元素出现在页面上。 下面是一个使用显式等待的示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建浏览器对象 driver = webdriver.Chrome() # 打开网页 driver.get("https://www.example.com") # 设置显式等待,最长等待10秒 wait = WebDriverWait(driver, 10) # 等待元素出现 element = wait.until(EC.presence_of_element_located((By.ID, "element_id"))) # 执行后续操作 element.click() # 关闭浏览器 driver.quit() ``` 在上面的代码使用`WebDriverWait`类设置了一个最长等待时间为10秒,然后使用`presence_of_element_located`方法等待元素出现。如果在10秒内元素出现了,则继续执行后续操作;如果超过10秒元素还未出现,则抛出异常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值