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()