Python selenium的基本使用方法分析


Posted in Python onDecember 21, 2019

本文实例讲述了Python selenium的基本使用方法。分享给大家供大家参考,具体如下:

selenium是一个web自动化测试工具,selenium可以直接运行在浏览器上,可以接收指令,让浏览器自动加载页面,获取需要的数据。

selenium的基本使用

1.导包

from selenium import webdriver

2.创建driver对象

webdriver.PhantomJS()

3.请求数据

driver.get("http://www.baidu.com")

4.查看网页源码

driver.page_source

5.关闭无界面浏览器

driver.quit()

6.根据id定位元素

drivrt.find_element_by_id("kw")

7.操作点击事件

click()

8.给输入框赋值

send_keys()

selenium的定位操作

定位元素语法:

find_element_by_id(返回一个元素)
find_elements_by_xpath(返回一个包含元素的列表)
find_elements_by_link_text(根据连接文本获取元素列表)
find_elements_by_partial_link_text(根据链接包含的文本获取元素列表)
find_elements_by_tag_name(根据标签名获取元素列表)
find_elements_bu_class_name(根据类名获取元素列表)

注意

find_element和find_elements的区别:多了个s返回列表,没有s的返回匹配到的第一个。

获取数据

获取文本:element.text

获取属性值:element.get_attribute("href")

selenium的其他方法

selenium处理cookie

driver.get_cookies(),获取的是完整的cookie信息,不光有name、value,还有domain等其他信息。

# 把cookie转换为字典
cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
# 删除一条cookie
driver.delete_cookie("CookieName")
# 删除所有cookie
driver.delete_all_cookies()

页面等待

time.sleep(10)

selenium执行js代码

driver.execute_script('js语句')

switch方法切换的操作

1.窗口切换

# 获取当前所有的窗口
current_windows = driver.window_handles
# 根据窗口索引进行切换
driver.switch_to.window(current_windows[1])

2.selenium默认访问不了frame中的内容,对应解决的方法是driver.switch_to.frame()

3.处理页面弹窗提示

driver.switch_to.alert()

页面前进和后退

driver.forward() # 前进
driver.back(() # 后退

selenium的优缺点

  • 优点:selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来较容易。
  • 缺点:selenium由于在获取页面过程会发送很多请求,所以效率非常低。

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
初学python数组的处理代码
Jan 04 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
python matplotlib拟合直线的实现
Nov 19 Python
Python正则表达式急速入门(小结)
Dec 16 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
Python数据处理的三个实用技巧分享
Apr 01 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 #Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 #Python
python支持多线程的爬虫实例
Dec 21 #Python
Python 实现try重新执行
Dec 21 #Python
在python shell中运行python文件的实现
Dec 21 #Python
Python 脚本的三种执行方式小结
Dec 21 #Python
python带参数打包exe及调用方式
Dec 21 #Python
You might like
memcache命令启动参数中文解释
2014/01/13 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python3处理HTTP请求的实例
2018/05/10 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
Python使用进程Process模块管理资源
2020/03/05 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
物流管理专业职业生涯规划书
2014/01/06 职场文书
旷课检讨书1000字
2014/02/14 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016年党建工作简报
2015/11/26 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
PHP遍历数组的6种方式总结
2021/11/17 PHP
mysql的单列多值存储实例详解
2022/04/05 MySQL