Python页面加载的等待方式总结

作者:小妮浅浅 时间:2023-07-24 23:42:30 

1、显式等待

它指定要查找的节点,然后指定一个最长的等待时间,如果规定时间内加载出来了这个节点,就返回查找的节点;如果规定时间内没有加载出该节点,就抛出超时异常。


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
broswer = webdriver.Chrome()
broswer.get('https://www.jd.com/')
wait = WebDriverWait(broswer, 20)
input_q = wait.until(EC.presence_of_element_located((By.ID, 'key')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.button')))
print(input_q, button)

2、隐式等待

当使用隐式等待执行测试的时候,如果Selenium没有在DOM中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常。换句话说,当查找节点而节点并没有出现的时候,隐式等待将等待一段时间再查找DOM,默认时间是0,示例如下:


from selenium import webdriver
browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get('https://www.jd.com/')
input_q = browser.find_element_by_class_name('button')
print(input_q)

知识点扩展:

Python里有三种等待的方式:

1、强制等待

导入定时等待库

from time import sleep 或者 import time

time.sleep(10) # 表示强行等待10s在执行下一句代码 这种等待方式时间到了就会执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。而且如果等待的元素已经被加载出来,还需要等待到时间才会执行下一句,浪费时间。

2、 隐性等待

driver.implicitly_wait(30) #等待30s
这个等待表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。
这个方法的缺点是你需要的元素已经加载出来了,但页面还没有加载完,再需要继续等待页面加载完才能执行下一步操作。

3、显性等待

需要导入的包


from selenium.webdriver.support.wait import WebDriverWait #导入显性等待的包

from selenium.webdriver.support import expected_conditions as EC #判断所需要的元素是否已经被加载出来

from selenium.webdriver.common.by import By #定位

来源:https://www.py.cn/jishu/jichu/27131.html

标签:Python,页面加载
0
投稿

猜你喜欢

  • 自己用python做的一款超炫酷音乐播放器

    2021-05-26 04:47:35
  • python中的Json模块dumps、dump、loads、load函数用法详解

    2023-11-09 20:01:30
  • Flask  请求钩子的实现

    2022-04-25 21:21:12
  • Windows下ORACLE 10g完全卸载的方法分析

    2012-07-11 16:09:26
  • 关于Python3的import问题(pycharm可以运行命令行import错误)

    2022-11-11 11:34:11
  • bootstrap-table+treegrid实现树形表格

    2024-04-29 13:12:53
  • 如何实现固定长度的自动编号?

    2010-06-03 10:08:00
  • vue开发中关于axios的封装过程

    2024-04-30 10:40:24
  • Python装饰器实现几类验证功能做法实例

    2023-11-11 18:09:30
  • python 窃取摄像头照片的实现示例

    2021-12-27 19:16:11
  • python pyg2plot的原理知识点总结

    2021-03-27 23:13:51
  • CentOS 6.5中安装Python 3.6.2的方法步骤

    2022-10-11 09:13:43
  • 理解Python垃圾回收机制

    2023-01-19 23:39:32
  • 使用Python实现管理系统附源码

    2023-04-04 04:22:34
  • 详解pytorch 0.4.0迁移指南

    2023-04-10 08:02:14
  • PyTorch实现MNIST数据集手写数字识别详情

    2021-08-03 17:30:36
  • Python动刷新抢12306火车票的代码(附源码)

    2021-04-27 08:13:24
  • 基于PHP+Ajax实现表单验证的详解

    2023-11-14 12:52:43
  • pycharm 使用心得(三)Hello world!

    2022-10-08 09:59:56
  • Atom的python插件和常用插件说明

    2022-11-29 00:46:08
  • asp之家 网络编程 m.aspxhome.com