Python实现自动化网页操作

1 准备

推荐使用Chrome浏览器

1.1 安装selenium程序包

激活虚拟环境,打开新的Terminal,输入以下代码:

python -m pip install selenium

如下图所示,表示安装成功,版本为4.7.2

安装成功

关闭虚拟环境,打开新的Terminal

1.2 引入函数模块

#引入time模块,实现延时
import time
#引入selenium库中的webdriver模块,实现对网页的操作
from selenium import webdriver
#引入By Class,辅助元素定位
from selenium.webdriver.common.by import By
#引入ActionChains Class,辅助鼠标移动
from selenium.webdriver.common.action_chains import ActionChains

2 实现

2.1 打开网页

#打开谷歌浏览器
driver = webdriver.Chrome()
#打开网页
driver.get('URL') #将URL替换为需要操作的网址

2.2 元素定位

要想实现对网页的控制,需要首先定位网页上的元素,一般为搜索框、选项、按钮等。

selenium 4.0以上的版本更新了元素定位方式,要用到find_element函数,用法举例如下:

el = driver.find_element(By.NAME, "*")

首先要获取元素的信息:

打开网页后,按F12,打开元素审查窗口

点击窗口中红框标出的图标,即可在页面上选择需要定位的元素,查看其代码。

一般需要定位的元素代码都以input开头,下图为搜索框的代码,从代码中可以提取定位元素所需要的信息:

根据下列信息均可以定位元素,但要保证根据该信息可以唯一定位到该元素:

如果根据其他信息无法唯一定位该元素,可以采取XPath定位,XPath的获取方式比较特殊,需要右键单击该代码行,在下拉列表中选择Copy full XPath,如下图所示:

2.3 元素控制

定位到元素后,可以进行下列操作,实现对元素的控制:

以输入文字为例,代码如下(*为需要输入的文字):

el.send_keys('*')

如果打开网页时,需要控制的元素不在可视范围内,需要滑动鼠标定位,则要借助于ActionChains,否则可能会报错:找不到该元素。

ActionChains(driver).move_to_element(el).click().perform()
el.click()

上述示例为点击操作,其中第二行最好加上,确保点到该元素

另外一种找不到元素的原因可能是网页还没有加载完毕,此时就可以借助于延时功能:

time.sleep(1)

2.4 弹出框的处理

如果点击按钮后,不是打开一个新的页面,而是弹出了一个窗口,需要在新的窗口中操作,则需要通过如下代码转到新的frame下,否则可能会报错:找不到该元素。

driver.switch_to.frame(0)

随后继续按2.2定位元素即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/160568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手动制作Docker容器镜像

文章目录 手动制作Docker容器镜像说明前期准备制作镜像1.启动一个centos系统的容器2.在centos容器中源码安装httpd服务3.基于已经安装好httpd服务的centos容器制作一个httpd镜像4.验证制作出来的镜像的功能5.上传至自己的docker镜像仓库(可选) 手动制作D…

Apache Doris (五十一): Doris数据缓存

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1.

VScode + opencv + c++ + win配置教程

准备: 1、下载opencv 2、下载MinGw 3、 3、下载CMake 下载完解压放到一个文件夹里面,便于环境管理,文件夹我重命名了,解压出来文件名不一样正常 环境变量配置 C:\Users\wuxulong\cpp_env\MinGw\mingw64\bin C:\Users\wuxulon…

记录离线安装xlwings

有场景需要离线安装xlwings。 环境:win7 64位,python3.8.10-amd64。 首先安装python。 安装需要准备: 其中pywinn32解压如下: 安装python3.8.10,解压各类文件夹。 (1)首先安装pywin32-306.…

Android性能优化--Perfetto用SQL性能分析

Android性能优化–Perfetto用SQL性能分析 文章目录 Android性能优化--Perfetto用SQL性能分析介绍Perfetto SQL 基础使用 Perfetto SQL 进行性能分析总结 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134167741 最新更新地址 https://gitee.com/chenjim/che…

IOS渲染流程之提交图层数据至RenderThread进程

大致链路 UIView/CALayer---->CoreAnimation./Core Graphics/Core Image---->GPU Drive-->GPU 图层树/视图树 一个UIView(视图)对应一个CALayer(图层),CALayer对应显示的数据其有个content代表Bitamp&#…

前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案

目录 场景还原相关代码开发者工具 - 网络请求记录 问题排查定位改bug 总结 场景还原 我在前端使用axios接收后端xlsx表格文件流并下载,xlsx文件能够下载成功,但是打开却显示文件无法打开 相关代码 请求API封装:Content–Type以及responseType经核对均…

CH10_简化条件逻辑

分解条件表达式(Decompose Conditional) if (!aDate.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd))charge quantity * plan.summerRate; elsecharge quantity * plan.regularRate plan.regularServiceCharge;if (summer())…

Py之auto-gptq:auto-gptq的简介、安装、使用方法之详细攻略

Py之auto-gptq:auto-gptq的简介、安装、使用方法之详细攻略 目录 auto-gptq的简介 1、版本更新历史 2、性能对比 推理速度 困惑度(PPL) 3、支持的模型 3、支持的评估任务 auto-gptq的安装 auto-gptq的使用方法 1、基础用法 (1)、量…

堆叠注入 [GYCTF2020]Blacklist1

打开题目 判断注入点 输入1,页面回显 输入1 页面报错 输入 1 # 页面正常,说明是单引号的字符型注入 我们输入1; show databases; # 说明有6个数据库 1; show tables; # 说明有三个表 我们直接查看FlagHere的表结构 1;desc FlagHere;# 发…

Spring Boot 使用断言抛出自定义异常,优化异常处理机制

文章目录 什么是断言?什么是异常?基于断言实现的异常处理机制创建自定义异常类创建全局异常处理器创建自定义断言类创建响应码类创建工具类测试效果 什么是断言? 实际上,断言(Assertion)是在Java 1.4 版本…

【QT】文件读写

新建项目 加入控件 整体做一个布局 功能&#xff1a;选择文件路径&#xff0c;打开文件&#xff08;两种文件格式&#xff1a;utf-8、GBK&#xff09; #include "widget.h" #include "ui_widget.h" #include <QPushButton> #include <QFileDial…