不废话简单易懂的Selenium 页面操作与切换

不废话简单易懂的Selenium 页面操作与切换

本人在操作Selenium由于之前没有总结笔记,做各种操作的时候总是要查资料查来查去,所以总结一下一些常用的Selenium操作方法和基础配置,如果需要针对html进行内容截取和操作,可以同时看本人的lxml操作笔记食用:

python简单易懂的lxml读取HTML节点及常用操作方法-CSDN博客

基础配置

基础包安装

我一般用清华源下载

Selenium基础包安装,注意版本不同,语法也会有所变化,我使用的python版本是3.19

复制代码
pip3 install selenium~=4.23.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

方便快速下载对应chrome驱动包的工具下载

复制代码
pip3 install webdriver_manager=4.0.2

初始化

python 复制代码
        # 初始化自动化爬虫
        # 配置参数
        chrome_options = Options()
        # 设置日志级别为 FATAL
        chrome_options.add_argument('--log-level=3')
        # 忽略证书错误
        chrome_options.add_argument('--ignore-certificate-errors')
        chrome_options.add_argument("--headless")  # 启用无头模式,隐藏浏览器界面
        chrome_options.add_argument("--no-sandbox")  # 防止一些潜在问题
        chrome_options.add_argument('--disable-dev-shm-usage')
        chrome_options.add_argument("--window-size=1800,3000") # 防止页面某些元素可能不被点到

        # 添加user-agent,避免被当作爬虫脚本,使得无头模式下能够正常爬取
        chrome_options.add_argument(
            "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
        executable_path = ChromeDriverManager().install() # 安装chrome驱动并自动获取地址返回
        service = ChromeService(
            executable_path=executable_path)
        driver = webdriver.Chrome(service=service, options=chrome_options) # 得到驱动器

基础操作

打开链接url

从当前页面打开链接:

python 复制代码
driver.get(url)

新建一个标签页并打开链接(注意此时句柄还是上一个页面,需要手动切换):

python 复制代码
 # 打开新标签页
driver.execute_script("window.open('{}');".format(link))

获取句柄与切换关闭标签页

句柄代表的是一个页面,切换句柄来获取每个页面的信息进行操作

获取当前句柄:
py 复制代码
page_list_handle = driver.current_window_handle
获取全部句柄:

获取到的是句柄的数组列表

python 复制代码
all_handles = driver.window_handles
切换句柄(切换标签页):

切换回一开始保存的句柄

python 复制代码
self.driver.switch_to.window(page_list_handle)

切换到当前的最后一个句柄,也就是新创建的句柄:

python 复制代码
self.driver.switch_to.window(all_handles[-1])
关闭指定标签页:

此时被关闭的是当前选中的句柄,就自然关闭了标签页

python 复制代码
driver.close()

获取当前句柄的网页html

python 复制代码
driver.page_source  # 获取当前页面的HTML源代码

获取当前句柄的网页链接

python 复制代码
driver.current_url

通过js去获取当前网页链接

js 复制代码
current_url = driver.execute_script("return window.location.href;")

执行所有操作完毕关闭驱动

python 复制代码
driver.quit()  # 关闭驱动程序,释放资源

元素选择和点击,输入

按钮

按钮可以通过xpath定位获取,driver.find_element是定位一个元素,driver.find_elements是定位多个元素

python 复制代码
next_button = driver.find_element(By.XPATH, "//*[contains(@id, 'next') or contains(@name, 'next') or contains(@class, 'next')]")

点击

python 复制代码
next_button.click()

当一般的点击操作无法生效的时候可以使用js单击法

python 复制代码
driver.execute_script("arguments[0].click();", next_button)
文本框

获取多个文本框的其中一个文本框

python 复制代码
input_element = driver.find_elements(By.XPATH, ".//input")[0]

清除文本框内容

python 复制代码
# 清除输入框中的默认文本(如果有的话)
input_element.clear()

如果发现无法清除,则最好用js方法清除

python 复制代码
driver.execute_script("arguments[0].value='';", input_element)

输入内容

python 复制代码
# 输入数字
input_element.send_keys(page_num)

获取文本框内容

注意,获得的数字的值可能是string类型,要手动转int

python 复制代码
current_value = input_element.get_attribute('value')

模拟键盘操作(回车)

python 复制代码
# 模拟回车键
input_element.send_keys(Keys.RETURN)
相关推荐
测试开发Kevin6 小时前
详解k6中的核心概念——场景(Scenarios)
测试工具·压力测试
王小王-1236 小时前
基于Python的二手车价格影响因素研究【多种机器学习对比、线性回归、MLP、SVR、LightGBM】
python·机器学习·汽车·二手车价格预测·二手车价格影响·汽车数据分析
java1234_小锋7 小时前
一周学会Matplotlib3 Python 数据可视化-绘制饼状图(Pie)
开发语言·python·信息可视化
NEUMaple8 小时前
python爬虫(三)----Selenium
爬虫·python·selenium
阿群今天学习了吗9 小时前
“鱼书”深度学习进阶笔记(3)第四章
人工智能·笔记·python·深度学习·算法
Pi_Qiu_11 小时前
Python初学者笔记第二十二期 -- (JSON数据解析)
笔记·python·json
技术老金11 小时前
LangGraph入门与避坑指南:从ReAct到复杂流程编排
人工智能·python
ID_1800790547312 小时前
淘宝拍立淘按图搜索API接口功能详细说明
大数据·python·json·图搜索算法
java1234_小锋12 小时前
周学会Matplotlib3 Python 数据可视化-绘制折线图(Lines)
开发语言·python·信息可视化·matplotlib·折线图·matplotlib3
用户5769053080112 小时前
MCP入门级简单尝试
python·mcp