selenium的其他方法
1 selenium 处理cookie
driver.get_cookies()
获取的是完整的cookie信息!不光有name、value,还有domain等其他信息!
# 把cookie转为字典
cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
# 删除一条cookie
driver.delete_cookie("CookieName")
# 删除全部cookie
driver.delete_all_cookies()
2.执行js代码
import time from selenium import webdriver driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver') driver.get("http://www.itcast.cn/") time.sleep(1) js = 'window.scrollTo(0,document.body.scrollHeight)' # js语句 driver.execute_script(js) # 执行js的方法 time.sleep(5) driver.quit()
4 switch方法切换的操作,切换窗口的方法如下:
# 1. 获取当前所有的窗口 current_windows = driver.window_handles # 2. 根据窗口索引进行切换 driver.switch_to.window(current_windows[1]) 代码: import time from selenium import webdriver driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver') driver.get("https://www.baidu.com/") time.sleep(1) driver.find_element_by_id('kw').send_keys('python') time.sleep(1) driver.find_element_by_id('su').click() time.sleep(1)
# 通过执行js来新开一个标签页 js = 'window.open("https://www.sogou.com");' driver.execute_script(js) time.sleep(1) # 1. 获取当前所有的窗口 windows = driver.window_handles time.sleep(2) # 2. 根据窗口索引进行切换 driver.switch_to.window(windows[0]) time.sleep(2) driver.switch_to.window(windows[1]) time.sleep(6) driver.quit()
# iframe login_frame = driver.find_element_by_id('login_frame') # 定位frame元素 driver.switch_to.frame(login_frame) # 转向到该frame中
# 当你触发了某个事件之后,页面出现了弹窗提示,处理这个提示或者获取提示信息方法如下: driver.switch_to.alert() # 跟frame一样的处理方式!
5. 页面前进和后退
driver.forward() # 前进
driver.back() # 后退
小结
- 获取cookie:
get_cookies()
- 删除cookie:
delete_all_cookies()
- 切换窗口:
switch_to.window()
- 切换iframe:
switch_to.frame()
6. selenium的优缺点
- selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易
- selenium由于在获取页面的过程中会发送很多请求,所以效率非常低,所以在很多时候需要酌情使用