博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python selenium 延时的几种方法
阅读量:5134 次
发布时间:2019-06-13

本文共 1896 字,大约阅读时间需要 6 分钟。

解决网页加载缓慢的几种方法:

一、显性等待WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待

1 from selenium import webdriver2 from selenium.webdriver.support.wait import WebDriverWait3 4 driver = webdriver.Firefox()5 driver.get("https://www.baidu.com/")6 # 等待时长30秒,默认每0.5秒询问一次7 WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("kw")).send_keys("sky")8 # sel_count_info = WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("selCount")).text
Wait Until

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until_not(可执行方法, 超时时返回的信息)

可以用selenium提供的 expected_conditions 模块中的各种条件,也可以用WebElement的 is_displayed() 、is_enabled()、is_selected() 方法,或者用自己封装的方法都可以

二、强制等待 sleep(xx),不建议总用这种等待方式,太死板,严重影响程序执行速度

1 from selenium import webdriver2 from selenium.webdriver.support.wait import WebDriverWait3 4 driver = webdriver.Firefox()5 driver.get("https://www.baidu.com/")6 # 强制等待时长5秒7 driver.find_element_by_id("kw").send_keys("sky")
Sleep

三、隐性等待implicitly_wait(xx),隐性等待对整个driver的周期都起作用,所以只要设置一次即可

1 from selenium import webdriver  2 3 driver = webdriver.Firefox() 4 # 隐性等待,最长等30秒 5 driver.implicitly_wait(30)  6 driver.get('https://huilansame.github.io')
implicitly_wait

四、隐性显性并用

1 from selenium import webdriver   2 from selenium.webdriver.support.wait import WebDriverWait   3 from selenium.webdriver.support import expected_conditions as EC   4 from selenium.webdriver.common.by import By   5 driver = webdriver.Firefox()   6 driver.implicitly_wait(10) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者   7 driver.get('https://huilansame.github.io')   8 locator = (By.LINK_TEXT, 'CSDN')   9 try:  10     WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))  11     print(driver.find_element_by_link_text('CSDN').get_attribute('href'))  12 finally:  13     driver.close()
隐性显性同时使用

 

转载于:https://www.cnblogs.com/skyliao/p/9072782.html

你可能感兴趣的文章
傅盛:从腾讯入股大众点评看行业剧变
查看>>
转载 C#匿名函数 委托和Lambda表达式
查看>>
ASP.NET MVC 前端(View)向后端(Controller)中传值
查看>>
抢红包游戏
查看>>
android 沉浸通知栏
查看>>
saltstack SLS文件
查看>>
Linux-各种姿势(less\vi等)打开各种类型的文件(txt/csv/xlsx等)出现不能打开(全乱码、部分乱码、二进制文件等)的问题...
查看>>
演示Spring框架的JDBC模板的简单操作
查看>>
【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
查看>>
Core Animation学习
查看>>
QT快捷键
查看>>
您上次已将进行的搜狗输入法的安装或卸载,操作要求重启。您在重启之后才能继续新的输入法安装卸载程序。...
查看>>
MySQL数据库应用 从入门到精通 学习笔记
查看>>
[转载]Ocelot简易教程(二)之快速开始2
查看>>
设计模式的七大原则
查看>>
改善Chrome在Windows下的中文字体效果
查看>>
python模块基础之json,requeste,xml,configparser,logging,subprocess,shutil。
查看>>
Class对象、反射、动态代理
查看>>
浅谈API设计
查看>>
「题目代码」P1034~P1038(Java)
查看>>