关于Python的Selenium框架全解,一篇完整的说明书,设计思想解读开源框架
6、 获取断言信息7、 等待页面加载完成7.1 显示等待7.2 隐式等待8、 页面切换9、 框处理9.1 警告框处理9.2 下拉框选择9.2.1 Select类的方法9.2.1.1 选中方法9.2.1.2 取消选择方法9.2.2 先定位select 然后在定位option9.2.3 直接通过xpath层级标签定位10、 文件上传11、 cookie操作11.1 cookie 登录方法12、 调用J
6、 获取断言信息
7、 等待页面加载完成
7.1 显示等待
7.2 隐式等待
8、 页面切换
9、 框处理
9.1 警告框处理
9.2 下拉框选择
9.2.1 Select类的方法
9.2.1.1 选中方法
9.2.1.2 取消选择方法
9.2.2 先定位select 然后在定位option
9.2.3 直接通过xpath层级标签定位
10、 文件上传
11、 cookie操作
11.1 cookie 登录方法
12、 调用JS代码
13、 窗口截图
13.1 截取验证码图片案例
14、 关闭浏览器
selenium 基础语法
=============
一、 环境配置
=======
1、 安装环境
=======
安装 selenium 第三方库
pip install selenium
下载浏览器驱动:
-
Firefox浏览器驱动: geckodriver
-
Chrome浏览器驱动: chromedriver , taobao备用地址
-
IE浏览器驱动: IEDriverServer
-
Edge浏览器驱动: MicrosoftWebDriver
-
Opera浏览器驱动: operadriver
-
PhantomJS浏览器驱动: phantomjs
需要把这些浏览器驱动放入 Python 应用目录里面的 Script 文件夹里面
干货主要有:
======
① 200 多本 Python 电子书(和经典的书籍)应该有
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且可靠的练手项目及源码)
④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
Python学习交流Q群101677771
2、 配置参数
=======
每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器
selenium启动配置参数接收是ChromeOptions类,创建方式如下 :
from selenium import webdriver
option = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=option)
创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目
from selenium import webdriver
option = webdriver.ChromeOptions()
添加启动参数
option.add_argument()
添加扩展应用
option.add_extension()
option.add_encoded_extension()
添加实验性质的设置参数
option.add_experimental_option()
设置调试器地址
option.debugger_address()
常用配置参数:
from selenium import webdriver
option = webdriver.ChromeOptions()
添加UA
options.add_argument(‘user-agent=“MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1”’)
指定浏览器分辨率
options.add_argument(‘window-size=1920x3000’)
谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument(‘–disable-gpu’)
隐藏滚动条, 应对一些特殊页面
options.add_argument(‘–hide-scrollbars’)
不加载图片, 提升速度
options.add_argument(‘blink-settings=imagesEnabled=false’)
浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument(‘–headless’)
以最高权限运行
options.add_argument(‘–no-sandbox’)
手动指定使用的浏览器位置
options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
#添加crx插件
option.add_extension(‘d:\crx\AdBlock_v2.17.crx’)
禁用JavaScript
option.add_argument(“–disable-javascript”)
设置开发者模式启动,该模式下webdriver属性为正常值
options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’])
禁用浏览器弹窗
prefs = {
‘profile.default_content_setting_values’ : {
‘notifications’ : 2
}
}
options.add_experimental_option(‘prefs’,prefs)
添加代理 ip
options.add_argument(“–proxy-server=http://XXXXX.com:80”)
driver = webdriver.Chrome(chrome_options=chrome_options)
其他配置项目参数
–user-data-dir=”[PATH]”
指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区
–disk-cache-dir=”[PATH]“
指定缓存Cache路径
–disk-cache-size=
指定Cache大小,单位Byte
–first run
重置到初始状态,第一次运行
–incognito
隐身模式启动
–disable-javascript
禁用Javascript
–omnibox-popup-count=“num”
将地址栏弹出的提示菜单数量改为num个
–user-agent=“xxxxxxxx”
修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果
–disable-plugins
禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果
–disable-javascript
禁用JavaScript,如果觉得速度慢在加上这个
–disable-java
禁用java
–start-maximized
启动就最大化
–no-sandbox
取消沙盒模式
–single-process
单进程运行
–process-per-tab
每个标签使用单独进程
–process-per-site
每个站点使用单独进程
–in-process-plugins
插件不启用单独进程
–disable-popup-blocking
禁用弹出拦截
–disable-plugins
禁用插件
–disable-images
禁用图像
–incognito
启动进入隐身模式
–enable-udd-profiles
启用账户切换菜单
–proxy-pac-url
使用pac代理 [via 1/2]
–lang=zh-CN
设置语言为简体中文
–disk-cache-dir
自定义缓存目录
–disk-cache-size
自定义缓存最大值(单位byte)
–media-cache-size
自定义多媒体缓存最大值(单位byte)
–bookmark-menu
在工具 栏增加一个书签按钮
–enable-sync
启用书签同步
3、 常用参数搭配
=========
制作无头浏览器
第一种写法
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument(‘–headless’)
chrome_options.add_argument(‘–disable-gpu’)
driver = webdriver.Chrome(chrome_options=chrome_options)
第二种写法
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(‘–headless’)
options.add_argument(‘–disable-gpu’)
driver = webdriver.Chrome(chrome_options=options)
规避检测
门户网站检测如果是selenium请求的,有可能会拒绝访问。这也是一种反爬机制
实现规避检测
from selenium import webdriver
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_experimental_option(‘excludeSwitcher’, [‘enable-automation’])
driver = webdriver.Chrome(options=options)
注意:这里只能使用 options 添加
如果有其他的模块要添加,注意要分开添加
4、 分浏览器启动
=========
from selenium import webdriver
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Firefox(executable_path=“驱动路径”)
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Ie() # Internet Explorer浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.Opera() # Opera浏览器
driver = webdriver.PhantomJS() # PhantomJS
二、 基本语法
=======
1、 元素定位
=======
元素定位语法
常用语法:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
在 element 变成 elements 时,返回符合条件的所有元素组成的数组
2、 控制浏览器操作
==========
控制浏览器大小
- driver.set_window_size(480, 800)
浏览器后退,前进
driver.forward()
driver.back()
刷新
- driver.refresh()
3、 操作元素的方法
==========
3.1 点击和输入
=========
driver.find_element_by_id(“kw”).clear() # 清空文本
driver.find_element_by_id(“kw”).send_keys(“selenium”) # 模拟按键输入
driver.find_element_by_id(“su”).click() # 单击元素
3.2 提交
======
在搜索框模拟回车操作
search_text = driver.find_element_by_id(‘kw’) search_text.send_keys(‘selenium’) search_text.submit() # 模拟回车操作
3.3 其他
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-XeRZZtO2-1711006965847)]
更多推荐
所有评论(0)