不废话简单易懂的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)
相关推荐
JavaEdge在掘金2 分钟前
启动nginx报错,80 failed (97: Address family not supported by protocol)
python
纪元A梦9 分钟前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
程序员小远21 分钟前
接口测试和单元测试详解
自动化测试·软件测试·python·测试工具·单元测试·测试用例·接口测试
Tech Synapse30 分钟前
电商商品推荐系统实战:基于TensorFlow Recommenders构建智能推荐引擎
人工智能·python·tensorflow
聿小翼34 分钟前
selenium-wire 与 googletrans 的爱恨情仇
python
咖啡调调。36 分钟前
模板引擎语法-算术运算
python·django·sqlite
CodeCraft Studio36 分钟前
Excel处理控件Spire.XLS系列教程:Java设置Excel活动工作表或活动单元格
java·python·excel
Doker 多克37 分钟前
Python-Django系列—部件
开发语言·python
Linux运维老纪39 分钟前
Python文件操作及数据库交互(Python File Manipulation and Database Interaction)
linux·服务器·数据库·python·云计算·运维开发
Bruce_Liuxiaowei1 小时前
MCP Python SDK构建的**SQLite浏览器**的完整操作指南
数据库·python·sqlite