简介
- selenium 是一个 web 的自动化测试工具,开源。支持多平台,支持Java、Python、Perl、PHP、C#等语言进行测试脚本编写。支持ie、chrome、firefox、opera、safari等浏览器,支持录制
- selenium包含selenium1(早期版本)、selenium2(selenium1与webdriver合并版)、selenium3(兼容selenium2,去掉selenium RC等不常用功能)
- selenium套件
- 录制工具(可将录制转换成基础脚本,也可直接编写脚本):selenium ide(官方插件,可到chrome插件中下载)、katalon recorder
- Selenium Grid:能并行的运行测试,也就是说,不同的测试可以同时跑在不同的远程机器上
- 官方Doc、github
- Chrome DevTools Protocol (CDP)文档
- 相关项目
- spider-flow可视化 https://gitee.com/ssssssss-team/spider-flow
- SeleniumBase 基于Selenium封装
- 本文基于python3 + selenium 4.9.0
安装
- 安装最新selenium版本
pip install -U selenium(需要安装python3) - 安装对应版本chromedriver(否则为selenium内置chrome)
1 | # 查看chrome版本 |
简单案例
- 不用启动Chrome浏览器,只需安装即可
1 | # coding = utf-8 |
XPath语法说明
1 | ## 绝对路径选择:从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的绝对路径 |
API
查找元素
1 | # 查找一个元素,如果有多个取第一个 |
取元素值
1 | # 去文本, 一般写成 ele.text.strip() 较好 |
给元素赋值
1 | # input输入框 |
多标签页操作
1 | # click()到 target=_blank 的链接打开新标签页 |
操作iframe
1 | # 通过id获取iframe |
其他
1 | ele.click() # 点击元素 |
扩展功能
控制当前已经打开的chrome浏览器窗口
- 测试阶段常用
- 原理:先手动通过命令行启动浏览器,并开启调试模式(设置一个调试端口);然后再通过Selenium连接
- 参考:https://blog.csdn.net/weixin_45081575/article/details/126389273
- 启动浏览器
1 | # 找到可执行文件位置,如"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" |
- 代码
1 | import os |
- 多会话
1 | driver1 = webdriver.Chrome() # 创建第一个会话 |
Selenium获取Network数据
- 参考:https://blog.csdn.net/weixin_45081575/article/details/126551260
- Chrome DevTools Protocol (CDP)文档
- Selenium CDP API
- 代码
1 | import json |
反爬技术
伪装请求端标识
1 | import undetected_chromedriver as uc |
- 使用stealth.min.js文件防止selenium被检测
动态字体及字体加密
- 破解网站字体加密和反反爬虫
- 58同城字体加密&破解方法
更有是每次请求都会返回随机字体,此时可将字体转成xml文件,然后根据xml中的
TTGlyph属性进行分析,如下图0-9字体分析说明
附件
performance_log案例
1 | { |
