web自动化知识点-02
webdriver元素定位
一、id定位
说明:html规定id属性在整个html中必须是唯一的,id定位是通过元素的id属性来定位元素
前提:该元素存在属性
id定位元素的方法:find_element_by_id()
Id定位元素的实现步骤
1、导入selenium包-->from selenium import webdriver
2、导入time-->import time
3、实例化火狐浏览器-->driver = webdriver.Firefox()
4、打开特定页面-->driver.get(url)
5、调用id的定位方法-->driver.find_element_by_id("")
6、使用send_keys()方法传值-->.send_keys()
7、暂停3秒-->sleep(3)
8、关闭浏览器-->quit()
二、name定位
说明:html规定name属性来指定元素的名称,name属性值在当前文档中可以不是唯一的,name定位是根据元素的name属性来定位的。
前提:元素有name属性
name定位元素的方法:find_element_by_name()
name定位元素的实现步骤:同id定位
三、class_name定位
说明:html规定了class来指定元素的类名,用法和id,name类似。(id是唯一的)
前提:元素有class属性
class_name元素定位的方法:find_element_by_class_name()
四、tag_name定位
说明:html是由不同的tag组成,而每个tag都是指同一类,所以tag定位效率比较低,一般不建议使用,tag_name的定位就是指通过标签名来定位
tag_name的定位方法:find_element_by_tag_name() 返回结果:返回的结果是符合条件的第一个标签
五、link_text定位
说明:用来定位<a>标签</a>,定位超链接文本。需要是a标签中的全部文本。
link_text定位方法:find_element_by_link_text()
六、partial_link_text定位
说明:用来定位<a>标签</a>,模糊匹配,需要传入a标签的局部文本,且代表唯一性。
partial_link_text的定位方法:find_element_by_partial_link_text()
七、find_elements_by_XXX()定位 (其中element为复数)
作用:查找定位所有符合条件的元素
返回的定位元素为列表形式
说明:列表数据的读取需要指定下标
例子:使用tag_name 获取第二个元素
driver.find_elements_by_tag_name('input')[1]
八、xpath
实际项目中存在没有id和name属性的情况,并且id,name,class属性值为动态获取,随着加载的变化而变化,此时需要使用xpath和css定位。Xpath
1、xpath为xml path的简称,用来确定xml文档中某个节点位置的语言。
2、html可以看作是xml的一种实现,所以selenium用户可以使用这种强大的语言在web应用中定位元素
xml:一种标记语言,用于数据的存储和传递,后缀.xml结尾
xpath的定位策略:
1、路径定位
- 相对路径:相对路径是以//开始的,后边必须跟标签名称或者*
绝对路径:绝对路径是以/开始,中间不能跳跃元素
2、利用元素定位
3、层级和属性结合
当父级含有属性,子级不含有属性的时候,需要通过父级来寻找子集 eg://*[@id = 'p1']/input (用相对路径寻找id属性为p1的标签下的标签为input的子标签)
4、属性与逻辑结合
当元素之前有相同的属性,使用and ://input[@id='p1' and @class='name'] (使用相对路径找到@id='p1' and @class='name'的input标签)
xpath定位的方法:driver.find_element_by_xpath()
xpah案例:
5、xpath的延伸:
1)//*[text()='xxxxxxx'] 查找到文本内容是xxxx的标签(其中文本内容是全部匹配)
2)//*[start-with(@属性名称,'xxxx')] 查找属性值以xxxx开头的 (//*[start-with(@id,'p')] )
3) //*[contains(@属性名称,'xxxx')] 查找属性值包含xxx(//*[contains(@id,'word')] )其中xxxx为相连的字符
九、css定位
css:是一种语言,它用来描述html和xml的元素的显示样式
css:有两种书写形式:第一种是直接在html中进行书写,<style type='test/css'>.... 。第二种是书写成一个以css为后缀的文件。在css语言中有css选择器,可以利用选择器找到该元素。
在selenium中推荐使用css定位,因为比xpath要快。
css定位的方法:driver.find_element_by_css_selector()
其中css的选择器:id选择器,class选择器,元素选择器,属性选择器,层级选择器。
id选择器:必须使用#进行修饰(#id标签的值:#password)
class选择器:使用‘.’来修饰(.class标签的值:.password)前提是该标签必须有class属性
元素选择器:根据元素名称就行,直接使用标签名称;input
属性选择器:[id = userA],选择id为userA的标签
层级选择器:根据元素的父子关系来选择的 例如:p>input 返回所有p元素先的所有的input元素
其中的>可以用空格代替p input (p [id = 'password'] 返回p标签下面id为password的标签)
css延伸:input[id^='p']: id属性已p开头的input标签
input[id$='p']:id属性已p结尾的input标签
input[id*='p']:id属性包含的input标签
xpath和css对比:
总结selenium中的八种定位方法:
web自动化知识点-02相关推荐
- pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...
- 做Web自动化前,你必会的几个技能
学习web自动化的前提条件:手工测试(了解各种测试的知识).学习编程语言.学习Web基础.学习自动化测试工具 .学习自动化测试框架 .需要掌握前端的一些知识,无论学习语言还是前端知识,都是为了接下来的 ...
- Day32 Web自动化进阶
系列文章目录 Day01 软件测试基础总结 Day02 测试用例知识点总结(上) Day03 测试用例知识点总结(下) Day04 禅道-从安装到卸载 Day05 MySql的基础使用 Day06 M ...
- Get Offer —— 渗透测试岗试题汇总(Web相关知识点)
点赞后看,养成习惯 喜欢的话 可以点个关注哟 你们的点赞支持对博主们来说很重要哦 !!! 为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 00 前情提要 01 Web相关知识点 1.漏洞类 2.情 ...
- 10行Python代码实现Web自动化管控
目录 1.模块安装 2.模块使用 本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的标签.名称来和 Web 进 ...
- python selenium - web自动化环境搭建
前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...
- Web自动化之Headless Chrome概览
Web自动化 这里所说的Web自动化是所有跟页面相关的自动化,比如页面爬取,数据抓取,页面内容检测,页面功能测试,页面加载性能测试,页面回归测试等等,当前主要由如下几种解决方式: 文本数据获取 这就是 ...
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏 ...
- Selenium Web 自动化 - 如何找到元素
Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...
- python写web自动化_使用Python+selenium实现第一个自动化测试脚本
原标题:使用Python+selenium实现第一个自动化测试脚本 最近在学web自动化,记录一下学习过程. 此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求. 环境 ...
最新文章
- TileList自动滚动指定单元格,可视部分
- 如何解决Linux下侦听端口被占用
- 【原创】Python 源文件编码解读
- RHEL7 kvm虚拟机桥接网络配置
- 安卓APP_ 布局(7) —— ViewPager翻页
- 防火墙的基础知识入门
- 解决ViewPager添加点击监听器无触发的问题
- 9. Document getElementsByName() 方法
- 重磅:国刊4区变1区!2021年中科院分区表正式公布!
- Android移动客户端性能测试浅谈——电量
- [百度空间] [转]内存屏障 - MemoryBarrier
- 几种常用App原型设计工具详解
- linux-Team-网卡绑定
- 红日安全 ATT&CK VulnStack靶场(三)
- 在 WPS Word中成功使用zetero
- 关于 ideaIU 20191.2的基本安装教程及破解
- Lesson 15 Fifty pence worth of trouble
- 数据交换平台开发之二功能需求
- LyX 发布撑持 CJK 的 1.5 正式版
- vue 中的indexof_vue的这段排序代码看着不是很懂, p = p.name.indexOf(searchperson)!== -1到底是什么意思...
热门文章
- 基于SpringBoot+Mybatis+Thymeleaf的信息管理系统
- SLAM_BA中重投影误差e 关于相机位姿扰动量δξ 的雅克比矩阵J 公式推导
- cartographer探秘第四章之代码解析(七)--- Cartographer_ros
- 回顾:饶毅教授的一次采访
- 综述|线结构光中心提取算法研究
- RxJava 的基本使用
- 单链表以及双向链表的操作
- 精读45-180程序转弯模板
- Java基本开发环境搭建(适合第一次使用)
- CMake Error at CMakeLists.txt:52 (PROJECT): No CMAKE_CXX_COMPILER could be found.