全网最全python库selenium自动化使用详细教程


Posted in Python onJanuary 12, 2021

一、安装selenium

pip install Selenium

二、初始化浏览器

  •  Chrome 是初始化谷歌浏览器
  • Firefox 是初始化火狐浏览器
  • Edge 是初始化IE浏览器
  • PhantomJS 是一个无界面浏览器。
from selenium import webdriver
 
driver = webdriver.Chrome()

三、设置浏览器大小

maximize_window 最大化窗口

set_window_size 自定义窗口大小

from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()

四、访问页面

from selenium import webdriver
 
driver = webdriver.Chrome()
 
driver.get('https://www.baidu.com')

五、定位元素

定位元素的基本方法如下

定位一个元素 定位多个元素 解释
find_element_by_id find_elements_by_id 通过元素id定位
find_element_by_name find_elements_by_name 通过元素name定位
find_element_by_xpath find_elements_by_xpath 通过xpath表达式定位
find_element_by_link_text find_elements_by_link_tex 通过完整超链接定位
find_element_by_partial_link_text find_elements_by_partial_link_text 通过部分链接定位
find_element_by_tag_name find_elements_by_tag_name 通过标签定位
find_element_by_class_name find_elements_by_class_name 通过类名进行定位
find_elements_by_css_selector find_elements_by_css_selector 通过css选择器进行定位

实例演示: 找到百度首页的输入框

from selenium import webdriver
 
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw')

六、定位元素的另一种写法

需引入By模块

from selenium import webdriver
from selenium.webdriver.common.by import By
 
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element(By.ID, 'kw')

七、元素交互

方法 解释
click() 点击某个元素
send_keys(输入的值) 模拟输入
clear() 清除操作
submit() 提交表单
get_attribute(name) 获取元素的属性值
location 获取元素的位置
text 获取元素的文本值
size 获取元素的大小
id 获取元素的id值
tag_name 获取元素的标签名

实例演示: 在百度输入框中输入我是autofelix,并点击搜索按钮

from selenium import webdriver
 
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('我是autofelix')
driver.find_element_by_id('su').click()

八、执行js

from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
 
driver.get('https://www.baidu.com')
 
js_sql = '''
  document.getElementById('kw').value = '我是autofelix'
'''
driver.execute_script(js_sql)

九、Frame操作

  • 网页中frame的话,需要执行切入切出操作
  • switch_to.from(子iframe的id名称) 切入
  • switch_to.parent_frame(父iframe的id名称) 切出
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
 
driver.get('https://www.baidu.com')
 
//这个网址并没有iframe,我臆测有,你们看看就行
driver.switch_to.frame('我臆测出来的iframe')

十、cookie的操作

 

方法 说明
delete_all_cookies() 删除当前页面所有cookies
get_cookie(name) 获取指定cookie值
get_cookies() 获取当前页面所有cookies值
add_cookie() 设置cookie值

十一、选项卡管理

方法 解释
window_handles 保存所有选项卡的元组
switch_to.window() 切换选项卡
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
 
driver.get('https://www.baidu.com')
 
driver.delete_all_cookies()
driver.add_cookie({'name': 'name', 'domain': '.baidu.com', 'value': 'autofelix'})

十二、鼠标事件

鼠标事件需要引入ActionChains模块

方法 说明
move_to_element(above) 鼠标右击
double_click() 鼠标双击
drag_and_drop() 左键按住拖动
perform() 动作存储

实例演示: 滑动滑块验证码

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
# 初始化谷歌浏览器
driver = webdriver.Chrome()
 
# 最大化窗口
driver.maximize_window()
 
# 打开头条登陆网址
driver.get('https://sso.toutiao.com')
 
# 等待某个元素是否出现
WebDriverWait(self.driver, 10).until(
  EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'发送')
)
 
# 实例化鼠标操作
action = ActionChains(self.driver)
 
# 按住滑块
action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform()
 
# 将滑块移动x的距离
action.move_by_offset(xoffset=x, yoffset=0).perform()
 
# 释放滑块
action.release().perform()

十三、等待

  • 隐氏等待
  • 如果到一定时间,指定的元素还没有出现,进程不会阻塞,但是到指定时间还没有找到,就会抛出异常
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.implicitly_wait(10)
 
driver.get('https://www.baidu.com')
  • 显示等待
  • 如果在一定时间内,指定的元素没有出现,进程会阻塞在这里,如果到指定时间还没有找到,就会抛出异常
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
driver = webdriver.Chrome()
driver.implicitly_wait(10)
 
driver.get('https://www.baidu.com')
WebDriverWait(driver, 10).until(
  EC.presence_of_element_located((By.ID, 'kw'))
)

十四、前进、后退和刷新

  • back 后退
  • forward 前进
  • refresh 刷新浏览器
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.get('https://www.taobao.com')
driver.get('https://www.jd.com')
 
driver.back()
driver.forward()
driver.refresh()

十五、关闭浏览器

  • close 关闭当前标签页
  • quit 关闭整个浏览器
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
//打开百度页面后,关闭整个浏览器
driver.quit()

到此这篇关于全网最全python库selenium自动化使用教程的文章就介绍到这了,更多相关python库selenium自动化使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中split方法用法分析
Apr 17 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
Python带动态参数功能的sqlite工具类
May 26 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
python实现复制大量文件功能
Aug 31 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
pandas数据处理进阶详解
Oct 11 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
python实现人机五子棋
Mar 25 Python
Python pip使用超时问题解决方案
Aug 03 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 #Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 #Python
python生成word合同的实例方法
Jan 12 #Python
python中常用的数据结构介绍
Jan 12 #Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 #Python
python3 kubernetes api的使用示例
Jan 12 #Python
python excel和yaml文件的读取封装
Jan 12 #Python
You might like
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
详解爬虫被封的问题
2019/04/23 Python
pytorch 常用线性函数详解
2020/01/15 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
法律专业实习鉴定
2013/12/22 职场文书
公司放假通知范文
2015/04/14 职场文书
戒赌保证书
2015/05/11 职场文书
付款证明模板
2015/06/19 职场文书
运动会班级前导词
2015/07/20 职场文书
病房管理制度范本
2015/08/06 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏