码迷,mamicode.com
首页 > Web开发 > 详细

爬虫之selenium和webdriver—基础(三):操作cookie和显式等待与隐式等待

时间:2020-06-11 16:41:26      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:sdfs   没有   expec   condition   访问   区别   页面   直接   就会   

 

一、操作cookie

 1 from selenium import webdriver
 2 
 3 driver_path = D:\chromedriver\chromedriver.exe
 4 driver = webdriver.Chrome(executable_path=driver_path)
 5 driver.get(https://www.baidu.com)
 6 
 7 # 1、获取所有的cookie,get_cookies; 获取一个cookie,get_cookie
 8 for cookie in driver.get_cookies():
 9     print(cookie)
10     
11 # 2、根据cookie的key获取value
12 print(driver.get_cookie(PSTM))
13 
14 # 3、删除所有的cookie
15 driver.delete_all_cookies()
16 
17 # 4、删除某个cookie
18 driver.delete_cookie(PSTM)

二、显式等待和隐式等待

访问采用Ajax技术的页面的时候,程序不能确定某个元素何时能完全加载出来,如果实际页面等待时间过长导致某个元素还没出来,但是程序直接使用了这个webElement,那么就会抛出NullPointer的异常。为了解决这个问题,所以selenium 提供了两种等待方式:显式等待和隐式等待

1、隐式等待:调用driver.implicity_wait。在获取不可用元素之前,会先等待10s(预设)。

1 from selenium import webdriver
2 
3 driver_path = D:\chromedriver\chromedriver.exe
4 driver = webdriver.Chrome(executable_path=driver_path)
5 driver.get(https://www.baidu.com)
6 
7 driver.implicitly_wait(10)  #隐式等待,预设等待时间为10s
8 driver.find_element_by_id(dsfew) #如果10s后还没有获取到dsfew这个id,那么久抛出异常

 

2、显式等待:显式等待是表明某个条件成立后才知晓获取元素的操作。也可以在等待的时候指定一个最大的时间,如果超过这个时间那么抛出一个异常。显示等待应该使用selenium.webdriver.support.exceptes_conditions期望的条件和selenium.webdriver.support.ui.WebDriverWait来配合完成。

 1 from selenium import webdriver
 2 from selenium.webdriver.support.ui import WebDriverWait
 3 from selenium.webdriver.support import expected_conditions as EC
 4 from selenium.webdriver.common.by import By
 5 
 6 driver_path = D:\chromedriver\chromedriver.exe
 7 driver = webdriver.Chrome(executable_path=driver_path)
 8 driver.get(https://www.baidu.com)
 9 
10 # 最大等待时间为10s,如果5s时id为sdfsdf被找到,就直接返回,不会等待10s。如果10s后还没找到,就抛出异常
11 #until里面是期待的条件,也就是需要被找到的元素
12 WebDriverWait(driver,10).until(
13     EC.presence_of_element_located((By.ID,sdfsdf))
14 )

显式等待和隐式等待的区别是:

隐式等待不管元素被找到与否,都会等待预设的时间。

显式等待如果找到元素时还没有到预设的时间,那么剩下的时间就不会继续等待。例如:预设等待10s,但是在第5s的时候元素被找到,那么剩下的5秒就不会等待了。

 

爬虫之selenium和webdriver—基础(三):操作cookie和显式等待与隐式等待

标签:sdfs   没有   expec   condition   访问   区别   页面   直接   就会   

原文地址:https://www.cnblogs.com/GouQ/p/13093785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!