元素是网页的HTML静态页面中所存在的一个个标签;
元素定位一般而言是基于元素自身所包含的特点来定位的,这些特点包括:
标签的名称(决定元素是什么)、标签的属性(决定元素有什么特质)、标签的文本
- 以下四种是根据元素的标签和属性来定位
(1)id
- 说明:通过元素的id属性来定位元素,具有唯一性,定位后基本不会重复
- 前提:元素有id属性
- id定位方法:find_element(by=By.ID, value=' ')或 find_element ("id", value=' ')
- 示例:打开百度搜索页面,通过id定位,输入搜索关键字
(2)name
- 说明:通过name属性来指定元素名称,相对少见,但容易重名
- 前提:元素有name属性
- name定位方法:find_element(by=By.NAME, value=' ')或 同上
- 示例:打开百度搜索页面,通过name定位,输入搜索关键字
(3)class_name
- 说明:指定元素的类名,通过class属性来定位;不推荐,重复的概率非常高
- 前提:元素有class属性
- class_name定位方法:find_element (by=By.CLASS_NAME, value=' ') 或 同上
- 示例:打开百度搜索页面,通过class_name定位,输入搜索关键字
(4)tag_name
说明:HTML本质就是由不同的tag(标签)组成,而每个tag都是指同一类,所以一定会返回多个结果,一般不建议使用,可用于查找多个重复的内容的时候使用。
tag_name定位方法:find_element(by=By.TAG_NAME, value=' ')
以下两种是根据超链接的文本定位
(5)link_text
- 说明:link_text定位与前面4个定位有所不同,它专门用来定位超链接文本(文本值)
- 前提:定位的元素是链接标签(a标签)
- link_text定位方法:find_element(by=By.LINK_TEXT, value=' ')
- 示例:打开首页,通过link_text定位到登录按钮,并进行点击操作
(6)partial_link_text
说明:partial_link_text定位是对link_text定位的补充,partial_link_text为模糊匹配;link_text为精确匹配。
前提:定位的元素是链接标签(a标签);通过传入a标签局部文本或全部文本来定位元素,要求输入的文本能够唯一找到这个元素
partial_link_text定位方法:find_element(by=By.PARTIAL_LINK_TEXT, value=' ')
示例:打开百度首页,通过partial_link_text定位到新闻,并进行点击操作
元素路径定位(如果同一页面中有多个结构相同的元素,可以用xpath定位)
(7)xpath
- 说明:有自己的独特语法,基于文件系统树状结构形态定位的
- 相对路径:类似于一种查询的调用
- **//*[@id="kw"] **
// 全局范围
*/a/span 任何一个元素或者增加筛选精度指定一个标签
[ ] 添加筛选条件
@ 表示添加的条件是属性
id 属性的名称
kw 属性的值
and 可以进行多个条件的关联
text() 可以通过文本来查找 eg://*[text()="新闻"]
/.. 通过子级定位到它的父级 eg: //*[@id="kw"] /..
/ 通过父级定位到它的子级 eg: //*[text()="新闻"] /span[1]
contains函数 contains() eg: //a[contains(text(),"百度"]) //form[contains(@id,"f"])
初期多用开发者工具的ctrl+f查找功能进行元素定位内容的校验。
绝对路径:一般不用绝对路径,很难维护
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
选择器定位(样式定位)
** (8)css_selector**
- 说明:定位界相对万金油的定位方法,有自己的独特语法,定位语法很麻烦。
- 元素定位之css selector(选择器定位)_BHY_的博客-CSDN博客_css selector
总结:有id用id,没id用name,都不行用xpath,链接可以用link text;元素定位如果同时有多个结果,默认返回定位的第一个结果
**示例 : **
版权归原作者 小样测试 所有, 如有侵权,请联系我们删除。