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()        # 后退

小结

  1. 获取cookie: get_cookies()
  2. 删除cookie: delete_all_cookies()
  3. 切换窗口:switch_to.window()
  4. 切换iframe: switch_to.frame()

6. selenium的优缺点

    • selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易
    • selenium由于在获取页面的过程中会发送很多请求,所以效率非常低,所以在很多时候需要酌情使用

 

原文地址:https://www.cnblogs.com/lab-zj/p/12166660.html