(1) id

  • 说明:基于元素的id属性定位
  • 前提:元素必须有id属性
  • 方法:driver.find_element_by_id()
  • 特性:一般情况下,在一个页面中,id属性值是唯一

(2)name

  • 说明:基于元素的name属性定位
  • 前提:元素必须有name属性
  • 方法:driver.find_element_by_name()
  • 特性:一般情况下,在一个页面中,name属性值是可以重复的

(3) class

  • 说明:基于元素的class属性定位
  • 前提:元素必须有class属性
  • 方法:driver.find_element_by_class_name()
  • 特性:一般情况下,在一个页面中,class可以有多个值,定位时,使用1个值

(4) tag_name:(基本用不上)

  • 说明:基于元素的标签名定位
  • 前提:标签名在页面中是唯一1个,或者有多个但就找第1个
  • 方法:driver.find_element_by_tag_name()
  • 特性:如果页面存在多个相同元素,默认返回符合条件的第一个元素

(5)link

  • 说明:链接的定位
  • 方法:driver.find_element_by_partial_link_text() 只要包含链接文字就行
       driver.find_element_by_link_text() 必须跟链接的文字一模一样
  • 特性:针对跳转链接,即属性href
    在这里插入图片描述

(6)xpath

  • 说明:路径定位
  • 方法:driver.find_element_by_xpath()
  • 绝对路径(不要使用,除非已经使用了所有方式仍然无法定位)
    方法:以单斜杠/开头,根据实际目录,逐层输写。
    例如:find_element_by_xpath("/html/body/div[2]/form/span/input") #div[2]指第2个元素
  • 相对路径(建议使用)
    • 方法:以双斜杠//开头,首先找目录元素是否有”精准元素“即唯一能标识的属性,找到,则用此属性定位
    • / 开头表示从文档的开始查找
    • // 开头表示从文档的任意位置查找,用的最多,//元素名[@属性=值]
    • . 开头表示选取当前节点
    • … 开头表示选取当前节点的父节点
    • 定位原则:
      (1)选取具有唯一性的属性进行定位
      (2)本身的属性无法定位自己,借助父级、祖父级来缩小定位
定位 说明
//ul/* ul的所有子元素
//input[2] 第2个input元素
//input[last() 最后一个input元素
input[position()< 3] 前2个input元素
//input[@value] 有value属性的input元素
//input[@name=‘password’ and @pwd=‘123456’] 属性name的值等于password并且属性pwd的值等于123456的input元素
//ul/*[5] ul的第五个子元素
//*[text()=‘Heading’ 任意包含Heading文本的元素
//input[@*=‘SYS123456’] 任意属性的值为SYS123456

在这里插入图片描述

(7)css

  • 说明:标签定位
  • 方法:driver.find_element_by_css_selector()
定位 说明
E 标签选择器,匹配所有使用E标签的元素
E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔
E > F 子元素选择器,匹配所有E元素的子元素F
E + F 毗邻元素选择器,匹配紧随E元素之后的同级元素F(只匹配第一个)
E ~ F 同级元素选择器,匹配所有在E元素之后的同级元素F
.info class选择器,匹配所有class属性中包含info的元素
#footer id选择器,匹配所有id属性等于footer的元素
E[att=‘val’] 属性att的值为val的E元素(区分大小写)
E[att^=‘val’] 属性att的值以val开头的E元素(区分大小写)
E[att$=‘val’] 属性att的值以val结尾的E元素(区分大小写)
E[att*=‘val’] 属性att的值包含val的E元素(区分大小写)
E[att1=‘v1’][att2*=‘v2’] 属性att1的值为1,att2的值包含v2的E元素(区分大小写)

在这里插入图片描述
(8)xpath定位与css定位的区别

  • css用的是标签匹配来定位
  • xpath使用路径来定位
  • 举例:湖南省
    css的定位标签是长江以南,鱼米之乡
    xpath定位则是经纬度

(9)元素定位规则

  • 当页面元素有id或者name属性时,用id或者name来定位
  • 当有链接需要定位时,建议用linkText或partialLinkText方式
  • 当要定位多个相同类型的元素,建议用tagName
  • 当要定位多个样式相同的元素,建议用css
  • 普通定位无法找到元素,建议使用xpath, css 实现层级定位
Logo

一站式 AI 云服务平台

更多推荐