Web自动化之元素定位篇

Web自动化测试中的八大定位方法

八大定位方式=6种基本定位+xpath+css

一、id定位

ele = driver.find_element_by_id("id名")

二、标签名定位tag_name,不能唯一的找到特定的元素

ele = driver.find_element_by_tag_name("元素标签名")

三、class_name 定位  不能唯一的找到特定的元素

ele = driver.find_element_by_class_name("class标签名")

四、name 定位 不唯一

ele = driver.find_element_by_name("name名")

五、link_text 定位,完整匹配文本值

ele = driver.find_element_by_link_text("完整文本值")

六、partial_link_text 定位,部分匹配上

ele =  driver.find_element_by_partial_link_text("部分文本值")

七、xpath定位

(1)绝对路径:以/开头, 非常依赖于页面的顺序和位置

/html/body/div[1]/div[1]/div[4]/div[1]/div/form/span[1]]
(2)相对路径:以//开头,不依赖于页面的顺序和位置,只看整个页面当中有没有符合表达式的元素
(3)选取当前节点; .. 选取当前节点的父节点
(4) @ 选取属性   //标签名称[@属性名称=值]    比如://*[@id="kw"]
(5) 逻辑运算  and 条件于;or 条件或  //标签名称[@属性名称=值  and 属性名称=值 ]
//div[@class="xxx" and contains(@style,"display:visibility")]
(6)*:通配符。匹配所有 //* ; @*:通配符。匹配所有属性 //*[@*="hello"]
1、标签名+节点属性定位
  语法://标签名[@属性名=值]
  //input[@id="kw" and @name="wd"]
2、函数:text()定位(函数和逻辑:文本内容定位,无name,class等,需要用到文本内容定位)
  文本全部匹配:text()="文本内容"
  //a[text()="更多产品"]
  文本部分匹配:contains(text(),部分文本内容)
  //*[@id="u1"]//a[text()="地图"]
3、部分包含contains
  contains(@属性名称/text(),文本内容)
  //a[//a[contains(@class,"namv")]] 后面可以加and或者or各种组合
  //a[contains(text(),"登录")]
4、层级定位
  //div[@id="u1"]/a[@name="tj_login"]
  //div[@id="u1"]//a[@name="tj_login"]
5、轴定位
  • ancestor 祖先节点,包括父节点
  • parent :父节点
  • preceding:当前元素节点标签之前所有节点(html的先后顺序)
  • preceding-sibling:当前元素节点之前的所有兄弟节点
  • following:当前元素节点标签之后的所有节点(html的先后顺序)
  • following-sibling:当前元素节点标签之后的所有兄弟节点  

  使用语法:

  /轴名称::节点名称[@属性=值]  ,使用场景:页面显示为一个表格样式的数据列,,需要通过组合来定位元素。
  //div//table//td//preceding::td
  //div[@id="kw"]/ancestor::a[text()="测试"]/following-sibling::div//a
八、CSS定位

  1、id选择器

  根据元素id属性来选择格式:#id

  #su<选择id属性值为su的元素>

  2、class选择器

  根据元素class属性来选择格式:.class

  .telA<选择class属性值为tel的所有元素>

  3、元素选择器

  根据元素的标签名选择格式:element

  input <选择所有input元素>

  4、属性选择器

  根据元素的属性名和值来选择

  [type=“password”] <选择type属性值为password的元素>

  定位多个属性的写法:

  [属性1=“属性值”][属性2=“属性值”]...

  5、根据元素层级关系定位

  上下级关系:上级元素下面所有的后代元素,包括直接子元素

    上级元素 下级元素
  父子关系:上层元素下面紧跟下级元素...
    父元素>子元素
  兄弟关系,同级关系:
    哥哥+弟弟
    css语法中只能通过前面的元素定位后面的元素
  6、子元素中指定唯一元素
  当目标元素同级元素都是同一种类型可以采用nth-child

  语法:

  元素:nth-child(n) n从1开始
  元素:nth-last-child(n) 倒数第n个元素
 
 
 
posted @ 2022-05-12 15:47  Jacky丶liu  阅读(332)  评论(0)    收藏  举报