Selenium
概述
参考:
- GitHub 项目,SeleniumHQ/selenium
- 官网
- https://selenium-python.readthedocs.io/ 特定于 Python 的文档,官方文档很多示例都不全。
Selenium 使浏览器自动化,用于自动化 Web 应用程序。Selenium 通过 WebDriver 以控制浏览器。
Selenium 启动的浏览器参数
C:\Program Files\Google\Chrome\Application\chrome.exe"
--allow-pre-commit-input
--disable-background-networking
--disable-backgrounding-occluded-windows
--disable-client-side-phishing-detection
--disable-default-apps
--disable-hang-monitor
--disable-popup-blocking
--disable-prompt-on-repost
--disable-sync
--enable-automation
--enable-logging
--log-level=0
--no-first-run
--no-service-autorun
--password-store=basic
--remote-debugging-port=0
--test-type=webdriver
--use-mock-keychain
--user-data-dir="C:\Users\DESIST~1\AppData\Local\Temp\scoped_dir11888_46574381"
--flag-switches-begin
--flag-switches-end data:
正常启动浏览器的参数
"C:\Program Files\Google\Chrome\Application\chrome.exe"
--flag-switches-begin
--flag-switches-end
--origin-trial-disabled-features=WebGPU
selenium 依赖于 WebDriver,这里我们实例化了一个 Chrome 的 WebDriver。
然后使用 chromedriver.exe 启动浏览器。
Selenium 使用浏览器的方式
打开新的浏览器
使用当前运行的浏览器
- 通过 Chrome 的 debug 端口连接
使用指定的缓存
Selenium 关联文件与配置
~/.cache/selenium/chromedriver/win64/${VERSION}/ # chromedriver.exe 文件的默认保存位置
${TEMP}/scoped_dirXXXXX/Default # Selenium 启动的浏览器的用户数据目录。浏览器会在 TMP 目录中创建用于保存用户数据的目录作为 Chrome 的个人资料路径。
WebDriver
Selenium WebDriver 是 W3C 推荐标准
- WebDriver 被设计成一个简单和简洁的编程接口。
- WebDriver 是一个简洁的面向对象 API。
- 它能有效地驱动浏览器。
元素
参考:
在 WebDriver 中有 8 种不同的内置元素定位策略:
- class 名称 #
- css 选择器 #
- ID #
- name #
- ……略
- tag 名称 #
- XPath # 通过 XML 的 XPath 表达式定位元素
- XPath 表达式可以在浏览器的 DevTools 中先使用 Ctrl+Shift+C 快捷键找到想要定位的元素,然后右键点击该元素,选择
复制 - 复制 XPath
。即可获得 XPath 表达式
- XPath 表达式可以在浏览器的 DevTools 中先使用 Ctrl+Shift+C 快捷键找到想要定位的元素,然后右键点击该元素,选择
交互
窗口和标签页
参考:
WebDriver 不区分窗口和标签页。如果打开了一个新标签页或窗口,Selenium 将使用 Handle(句柄) 处理它,每个标签页和窗口的 Handle 是其唯一的标识符,该标识符在单个会话中保持持久性。
可以使用以下方法获得当前窗口的窗口句柄:
driver.current_window_handle
解释一下什么叫“不区分窗口和标签页”,窗口是指 ctrl + n 创建的浏览器窗口,标签页是指 ctrl + t 创建的浏览器标签页。
driver.current_window_handle
获取到的窗口 Handle 与窗口第一个标签页的 Handle 相同,若创建了第二个标签页,关闭了第一个标签页,则窗口的 Handle 与 第二个标签页的 Handle 相同。也就是说,窗口即是标签页。窗口就是打开的第一个标签页。
driver.window_handles
方法会获取所有窗口中所有标签页的句柄,返回一个 List[str]
,不管标签页在多少个窗口中,哪怕窗口属于其他账户,也会一并获取到。
案例
https://github.com/onepureman/selenium_login_cracking 各种网站的滑动验证码使用selenium登陆破解,仅供交流学习,包括:京东,17173。。。
- 参考了
【 Python爬虫】京东滑块登录 滑动太快了
python获取html标签 python selenium获取html
https://zhuanlan.zhihu.com/p/638431974 # 软件测试/测试开发丨用户端web自动化测试学习笔记
https://zhuanlan.zhihu.com/p/94402506 python实现网站的自动登录(selenium实现,带验证码识别)
https://www.aneasystone.com/archives/2018/03/python-selenium-geetest-crack.html 使用 Python + Selenium 破解滑块验证码
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.