Python-web自动化-selenium(2)

目录

浏览器打开位置及尺寸

浏览器打开位置set_window_position()

浏览器尺寸set_window_size()

浏览器截图,网页刷新

浏览器截图

刷新网页

元素定位

元素定位包

元素概念

元素定位概念

selenium元素定位

定位一个元素find_element()

定位多个元素find_elements()

浏览器中查找多个元素document.getElementById()


浏览器打开位置及尺寸

浏览器打开位置set_window_position()

例如在浏览器左上角打开,或者在坐标为(x,y)的地方打开

set_window_position(横坐标,纵坐标)

python 复制代码
a1.set_window_position(0,0)# 左上角

a1.set_window_position(200,300)# 距离左上角200,300

浏览器尺寸set_window_size()

设置浏览器窗口大小,长和宽

复制代码
set_window_size(长,宽)
python 复制代码
a1.set_window_size(800,400)

浏览器截图,网页刷新

浏览器截图

get_screenshot_as_file('文件保存路径 ')

python 复制代码
a1=she()
a1.get('https://baidu.com/')
a1.get_screenshot_as_file('截图.png')
a1.quit()

刷新网页

刷新当前网页

refresh()

python 复制代码
a1.refresh()

元素定位

元素定位包

python 复制代码
from selenium.webdriver.common.by import By

By中包含八种定位元素

|----------------------|---------------|------------------|-----------------------|
| 定位方式 | 核心逻辑 | 核心特点 | 适用场景 |
| By.ID | 通过唯一id属性定位 | 速度最快,最稳定,优先使用 | 有唯一id的搜索框、登录按钮 |
| By.NAME | 通过name定位 | 速度快,比id更加常见 | 表单元素,输入框、单选框 |
| By.CLASS_NAME | 通过class定位 | 使用范围广 | 元素有特征性class属性 |
| By.TAG_NAME | 通过标签名定位 | 适合批量定位同类元素 | 定位所有<a>链接、<tr>表格行 |
| By.LINK_TEXT | 通过超链接完整文本定位 | 精准匹配链接 | 超链接文本固定且完整 |
| By.PARTIAL_LINK_TEXT | 通过超链接部分文本模糊定位 | 灵活无需完整文本 | 链接文本较长/仅部分固定 |
| By.XPATH | XML路径语法定位 | 能定位所有元素,支持复杂筛选 | 无ID/name、动态元素、层级嵌套 |
| By.CSS_SELECTOR | CSS选择器语法定位 | 比XPath高效,支持多维度筛选 | 复杂场景 |

优先级:ID>NAME>CLASS_NAME>CSS_SELECTOR>XPATH>TAG_NAME>PARTIAL_TEXT

元素概念

例如一个网页中的输入框,按钮,图片链接都是这个网页的元素

元素定位概念

通常用id,name,class定位

selenium元素定位

定位一个元素find_element()

找到返回的是一个列表,找不到报错

find_element(定位元素类型,定位元素值)

python 复制代码
a1.find_element(By.ID,'kw')

定位多个元素find_elements()

定位多个符合要求的元素,返回的是一个列表

找到返回的是一个列表,找不到返回空列表

浏览器中查找多个元素document.getElementById()

相关推荐
云烟成雨TD43 分钟前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
qq_366566503 小时前
视频配音自动化Pipeline:TTS选型+音色克隆+批量处理(附完整代码)
自动化·新媒体运营·音视频·音频
云计算磊哥@4 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步20155 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
极客先躯5 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
Java面试题总结6 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
志栋智能6 小时前
超自动化巡检:提升MTTR,缩短业务影响时间
运维·自动化
kong@react6 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
IvorySQL7 小时前
PostgreSQL 技术日报 (6月9日)|PL/SQL 迁移自动化,前沿峰会即将启幕
sql·postgresql·自动化
Black蜡笔小新7 小时前
自动化AI算法训练服务器DLTM训推一体工作站赋能多行业智能化升级
人工智能·算法·自动化