爬虫-selenium的其他的使用方法

selenium标签页的切换

当selenium控制浏览器打开多个标签页.使用selenium控制浏览器在不同的标签页中进行切换

# 1. 获取当前所有的标签页的句柄构成的列表
current_windows = driver.window_handles

# 2. 根据标签页句柄列表索引下标进行切换
driver.switch_to.window(current_windows[0])
from time import sleep
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()

driver.get("https://www.baidu.com/")
sleep(3)

# 获取新闻点击
driver.find_element_by_link_text('新闻').click()
sleep(3)


# selenium 第一次打开了一个标签页 然后又打开了几个标签页,那么便签页会一直是第一个标签页
# 如果需求获取到其他标签页的内容,是需要我们进行手动的去切换标签页面
#  : 先获取到所有的句柄    在根据句柄获取内容

# 获取当前所有便签页的句柄 的列表
# 列表中的元素的顺序是按照,页面中标签页展示的顺序进行排序
windows = driver.window_handles
# 切换标签页
driver.switch_to.window(windows[1])
sleep(2)

# 获取网页标题
print("当前标签页标题是: ----->", driver.title)

driver.quit()

switch_to切换frame标签

iframe是html中常用的一种技术,即一个页面中嵌套了另一个网页,selenium默认是访问不了frame中的内容的,对应的解决思路是driver.switch_to.frame(frame_element)。

#  切换frame标签
from time import sleep

from selenium import webdriver

# 创建driver对象
driver = webdriver.Chrome()
# 打开qq邮箱页面
driver.get("https://mail.qq.com/")

'''
一个页面中使用iframe 标签嵌套了另外的页面 selenium默认打开的还是最外层的那个页面 嵌套的页面不能直接定位到的 需求进行切换才可以定位
'''

# 切换frame标签
# by index,name, or weblement
driver.switch_to_frame("login_frame")

sleep(2)
# 获取到用户名和密码的输入框输入内容
driver.find_element_by_id('u').send_keys('111111')
sleep(2)
driver.find_element_by_id('p').send_keys('222222')
sleep(2)
driver.find_element_by_id('login_button').click()
sleep(2)

driver.quit()

selenium对cookie的处理

driver.get_cookies()返回列表,其中包含的是完整的cookie信息!不光有name、value,还有domain等cookie其他维度的信息。所以如果想要把获取的cookie信息和requests模块配合使用的话,需要转换为name、value作为键值对的cookie字典

# 获取当前标签页的全部cookie信息
print(driver.get_cookies())
# 把cookie转化为字典
cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
import time

from selenium import webdriver

# 1. 创建driver对象
driver = webdriver.Chrome()

# 2. 请求QQ邮箱登录页面
driver.get('https://mail.qq.com/')

# 先切换到iframe标签中,再进行定位标签进行登录
# switch_to_frame 方法即将被废弃
# driver.switch_to_frame('login_frame')
# 建议使用以下方式
driver.switch_to.frame('login_frame')

# 3. 定位到输入账号和密码标签,并设置账号和密码、
driver.find_element_by_id('u').send_keys('自己的QQ邮箱账号')
driver.find_element_by_id('p').send_keys('自己的QQ邮箱密码')
# 定位登录按钮,并点击
driver.find_element_by_id('login_button').click()

time.sleep(6)

# 获取登录之后的cookie信息
print("获取到登录之后的cookie信息:", driver.get_cookies())
# 将登录之后的cookie信息转换为字典
cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
print('转换完毕之后的cookie字典:', cookies_dict)

# 4. 退出
driver.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值