python中通过selenium简单操作及元素定位知识点总结


Posted in Python onSeptember 10, 2019

 

浏览器的简单操作

# 导入webdriver模块

# 创建driver对象,指定Chrome浏览器
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 访问百度
driver.get("http://baidu.com")
driver.get("http://sina.com")
# 后退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()

# 关闭窗口
driver.close()
# 关闭会话,关闭浏览器,关闭chromedriver
driver.quit()

selenium的8种定位方式

6种靠单一的特征来找元素(id, calss_name, tag_name, name, link_text(2))

组合各种特征和关系来找元素(xpath, css)

1.id定位:唯一

find_element_by_id()

2.name定位:不唯一

find_element_by_name()

find_elements_by_name()

3.class定位:不唯一

find_element_by_class()

4.tag_name定位:不唯一

find_element_by_tag_name()

# 单数,在DOM页面中,匹配到的第一个元素

find_elements_by_tag_name()

# 复数,返回的是一个列表,元素为webElement对象,全部匹配的元素

5.文本匹配:/完全匹配/部分匹配

find_element_by_link_text()

find_element_by_partial_link_text()

Xpath定位:

1.通过自己来定位:

语法://标签名[@属性名=值]

例如:

//*[@id="mCon"]/span

# *匹配所有元素

//*[@id="kw"]

2.通过文本来定位:

语法://标签名[text()="值"]

例如:

//h1[(text()= "第20期")]

# 完全匹配

//h1[contains(text(), "第20期")]

# 部分匹配,包含

3.层级定位:

如果找到的元素有两个或多个完全一样的元素,那么就通过他们不同的父级或父级的父级来定位

/ 绝对定位,单斜杠只能写子级,不能跳级写

// 相对定位,双斜杠可以写子级,子级的子级等等(推荐使用)

举例说明:

python中通过selenium简单操作及元素定位知识点总结

l 输入账号

//div//input[@name="account"]

//div[@class="padding-cont pt-login"]//input[@placeholder="邮箱/账号/手机号"]

l 输入密码

//div[@class="padding-cont pt-login"]//input[@name="pass"]

//div[@class="padding-cont pt-login"]//input[@type="password"]

l 下次自动登录

//div[@class="padding-cont pt-login"]//a[text()="下次自动登录"]

//div[@class="padding-cont pt-login"]//a[@class="auto-login fl"]

l 忘记密码

//div[@class="padding-cont pt-login"]//a[@class="forget fr"]

//div[@class="padding-cont pt-login"]//a[text()="忘记密码?"]

l 登录按钮

//div[@class="padding-cont pt-login"]//a[@class="btn-btn"]

//div[@class="padding-cont pt-login"]//a[text()="登录"]

Xpath轴定位:

含义:通过同级目录来定位元素,叫做轴定位

轴运算:

ancestor:祖先节点,包括父节点

parent:父节点

preceding-sibling:当前元素节点标签之前的所有兄弟节点

following-sibling:当前元素节点标签之后的所有兄弟节点

preceding:当前元素节点标签之前的所有节点(HTML页面先后顺序)

following:当前元素节点标签之后所有的节点(HTML页面先后顺序)

轴定位语法:

/轴名称::标签名称[@属性名=值]

示例:例://div//table//td//preceding::td

应用场景:

页面显示为一个表格样式的数据列,需要通过组合来定位元素

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python为tornado添加recaptcha验证码功能
Feb 26 Python
详解Python中__str__和__repr__方法的区别
Apr 17 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
pandas分组聚合详解
Apr 10 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 #Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 #Python
django drf框架自带的路由及最简化的视图
Sep 10 #Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 #Python
python3.7环境下安装Anaconda的教程图解
Sep 10 #Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 #Python
python 图像处理画一个正弦函数代码实例
Sep 10 #Python
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
用 PHP5 轻松解析 XML
2006/12/04 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
JS自动缩小超出大小的图片
2012/10/12 Javascript
js数组操作学习总结
2013/11/04 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
初始Nodejs
2014/11/08 NodeJs
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
帮一个朋友写的求职信
2014/08/09 职场文书
小学生安全保证书
2015/05/09 职场文书
小学美术教学反思
2016/02/17 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android