0
点赞
收藏
分享

微信扫一扫

web自动化测试八大元素定位方法

whiteMu 2022-04-15 阅读 52

HTML标签

  • 组成部分分为三个:标签名称(TagName)、属性(Attribute)、文本(Text)
  • 常见标签名称:a/div/span/i/tr/td/input/p/form/…
  • 元素的形态不要相信肉眼所见,要基于元素的属性来决定。
  • 文本并不是每一个标签都具有的东西

八种元素定位法则

  • 任何定位方法,都是为了准确定位到指定的元素,所以在选择定位方法的时候,必须要去校验你的定位方法是否正确及准确。
idID就相当于身份证号码。一般而言是不会重复的
name基于Name属性去定位
class基于元素的class属性去进行定位
tag name基于标签名称来进行元素定位,不推荐,重复率高
link text基于a标签的text内容
partial link text基于a标签的text内容进行模糊查找
xpath基于html结构来对元素进行定位
css selector基于css样式来对元素进行定位,速度快

定义浏览器

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
  • 通过id或name属性定位,方法见代码注释
# ID定位:在元素具备有ID的属性时,可以通过ID去进行定位。ID就相当于身份证号码。一般而言是不会重复的。
driver.find_element('id', 'su')
# Name定位:在元素具备有Name属性时,通过Name属性去定位。重复的概率相对而言还是可能存在的。类似于身份证上的名字
driver.find_element('name', 'rn')
  • 通过link text定位元素和partial link text定位
# Link Text:针对于a标签来实现的定位,定位条件是a标签的text内容
driver.find_element('link text', '新闻').click()
# Partial Link Text: 针对于A标签来实现的定位,是基于a标签的text内容进行模糊查找。类似于sql中的like
els = driver.find_element('partial link text', '使用百度')
  • 通过class name或tag name定位
# ClassName定位,基于元素的class属性去进行定位,不推荐使用,如果class值只有一个,可以考虑使用,但是要避免重复
el = driver.find_element('class name', 'bg s_ipt_wr new-pmd quickdelete-wrap ipthover')
# TagName定位:测试用不上,一般是在爬虫的时候应用,基于标签名称来进行元素定位
els = driver.find_elements('tag name', 'input')
  • 通过CSS定位元素
# CSS Selector元素定位:万金油型的元素定位。原理就是基于css样式来对元素进行定位。也是传说中定位最快的方法。
driver.find_element('css selector', '#kw').send_keys('#kw')
  • 通过xpath定位

绝对路径

# Xpath元素定位:定位界的万金油,原理是基于html结构来对元素进行定位,类似于操作系统下的文件管理系统
# 绝对路径:不到穷途末路之时,不要使用这个定位方法
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

相对路径

相对路径:元素的查询功能,通过右键copy,copy xpath获取元素的相对路径(此方法不推荐),一般都是通过手写xpath的形式
//*[@id="kw"]
  • xpath元素定位语法规则:

  • 语法//*[@id=“kw”] 表示从根路径下开始查找任意一个元素,该元素具备有id属性,且属性值为kw

  • // 表示从根路径下开始查找*表示任意元素也可以直接输入标签名称,用于指定某一个类型的元素

  • [] 表示添加筛选条件

  • @ 表示基于属性来进行查找

  • id表示属性的名称

  • kw表示属性的值

  • text()表示基于文本来定位

  • [contains()] 表示调用contains函数,进行内容的模糊查找

  • /following-sibling:😗 选取当前节点之后的所有同级节点

  • /… 表示当前节点的父节点

  • xpath手写的方式,除去避免绝对路径以外,还可以避 免动态元素导致的元素定位失败伪元素:正常定位即可

举报

相关推荐

0 条评论