Selenium - 浏览器操作
Selenium - 浏览器操作
获取浏览器信息
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com") # 获取当前浏览器名称 print(driver.name) # 获取当前网页的 URL 地址 print(driver.current_url) # 获取当前网页的标题 print(driver.title) # 获取当前网页的源代码 print(driver.page_source)
前进/后退/刷新
from selenium import webdriver # 浏览器实例化 driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 进行百度搜索 driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium") driver.find_element_by_xpath("//input[@id='su']").click() # 后退 driver.back() # 前进 driver.forward() # 刷新 driver.refresh()
窗口大小设置
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 把浏览器窗口最大化 driver.maximize_window() # 把浏览器窗口最小化 driver.minimize_window() # 设置浏览器窗口大小,长、宽作为参数传递进去,单位:像素 driver.set_window_size(1366, 768) # 获取浏览器大小 size = driver.get_window_size() print(size)
窗口截图
-
使用函数
get_screenshot_as_file()
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 保存为本地png图片 # 图片后缀最好为.png,如果是其他的执行的时候会有警告,但不会报错 driver.get_screenshot_as_file("D:\\baidu.png")
-
使用函数
save_screenshot()
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 对当前浏览器打开界面进行截图 driver.save_screenshot("D:\\baidu.png")
文件上传
- 上传有两种情况:
- input标签:如果上传组件是一个
input
标签,那么定位到元素后,直接使用send_keys()
方法就可以上传; - input标签:如果上传组
非input
标签,则需要借助第三方工具:第三方库pywin32
、第三方工具pyautogui
;
- input标签:如果上传组件是一个
input标签
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 定位上传文件元素 input_file = driver.find_element_by_id("xxx") # 上传文件 input_file.send_keys(r"D:\learn\xx.txt")
非input标签
TODO:还未遇到这种场景,待学习
标签页切换
-
在页面中点击某个链接之后,可能就会打开一个新的标签页,Chromedriver驱动是不会主动帮我们去切换。多标签页出现后,如果要做下一步操作,需要先切换浏览器标签页。
# 获取全部窗口句柄 handles = driver.window_handles # 获取当前窗口句柄 handle = driver.current_window_handle # 通过句柄切换窗口 driver.switch_to.window(handle) # 打开新的标签页 js = 'window.open("https://www.baidu.com")' driver.execute_script(js)
-
实战操作
import time from selenium import webdriver # 启动Chromedriver,并与Chromedriver开启会话 driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") # 点击新闻,新建一个tab标签页 driver.find_element_by_xpath("//div[@id='s-top-left']/a[1]").click() time.sleep(2) # 获取当前标签页句柄 win = driver.current_window_handle print('当前标签页:', win) # 获取当前所有标签页句柄 # 返回的是一个列表,按照标签页打开的顺序 wins = driver.window_handles print('所有标签页1:', wins) # 切换到第1个标签页 driver.switch_to.window(wins[0]) time.sleep(2) # 打开新的标签页 js = 'window.open("https://www.baidu.com")' driver.execute_script(js) time.sleep(2) # 再次获取当前所有标签页句柄 wins = driver.window_handles print('所有标签页2:', wins) # 关闭当前标签页 driver.close() # 关闭浏览器,kill掉chromedriver进程 driver.quit()
-
封装窗口切换,实现切换到下一个窗口和上一个窗口的功能
driver = webdriver.Chrome() def window_forward(driver): """自动切换到当前窗口的下一个窗口""" a = driver.window_handles b = driver.current_window_handle k = a.index(b) driver.switch_to.window(a[k+1]) def window_back(driver): """自动切换到当前窗口的上一个窗口""" a = driver.window_handles b = driver.current_window_handle k = a.index(b) driver.switch_to.window(a[k - 1]) 小技巧:
list.index(element)
用来获取元素在list中的索引位置,如果元素不存在会抛出异常。
分类:
Selenium
标签:
Python-自动化测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)