(五)UI自动化测试--八大元素定位法则

所有的UI层的自动化都是基于元素定位来实现的,所有的被操作的元素,都是WebElement元素,而WebElement元素都是通过HTML标签来体现的。

(一)HTML标签的基本格式

<tagName attribute1=”” attribute2>text</tagName>

<tagName attribute1=”” attribute2  /tagName>

标签:

a:超链接

img:图片

input:输入框文件上传

button:按钮

通用:div,li,span

实际系统中,元素的标签类型不是由表象来决定的,是通过CSS样式表来决定的。

而自动化时,就是基于标签的属性来定位标签

如何定位精准你需要操作的元素:

(二)八种元素定位

  1. Id(基于元素属性中id属性来定位的)
  2. name
  3. link text
  4. partial link text
  5. classname
  6. tagname
  7. cssselector
  8. xpath

1.id(基于元素属性中id属性来定位的)
  id类似于人们的身份证上的身份证号码,不出意外都不会出现重复
2.name
  name
类似于身份证上的姓名,可能会出现重复
  需检查一下:
ctrl+F,输入框中输入name值,回车
3.link text
 
主要用于超链接进行定位
  <a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
  find_element_by_link_text('
新闻')
4.partial link text
link text的模糊查询版本,类似于数据库中的like%
 
当模糊查询匹配到多条元素,自动选取第一条
  find_elements_by_partial_link_text--结果是一个list[]这个标数字,找对应的元素
5.classname:基于元素样式进行定位,非常容易遇到重复的
  复杂的
class属性,一个空格就表示一个classclassname值加空格会报错,不加空格,会出现很多重复
  所以非常不推荐用
classname定位
6.tagname:标签名进行定位,
7.cssselector
 
选中-右键-Copy-Copy selector
8.xpath
 
目前应用最多的一种行为,基于页面结构来进行的定位
  1)绝对路径:从html根路径下一层一层往下数,找到对应的层级,从而找到元素
  2)相对路径:基于匹配制度来查找元素,依据xpath语法结构来走
  选中
-右键-Copy-Cppy XPath
 
例如:绝对路径:/html/body/script[4]---script1开始
       相对路径:
//*[@id="su"] 
         //--
从根路径下开始查找元素
         * --任意元素
         []--表示筛选条件(查找函数)
         @ --表示基于属性来筛选,例如:@id="kw"表示基于id属性值为kw的条件来进行筛选
         自己写
xpath相对路径:
         //--根目录查找
         input--查找的是input标签
         []--表示筛选条件(查找函数)
         @ --表示基于属性来筛选,@name=“account"
        
完整://input[@name="ie"]
              //div[@]
        
确认xpath路径是否正确:
           1.在Chrome开发者工具Elements界面使用ctrl+f查找进行校验
           2.在Chrome开发者工具Console界面输入 $x()进行校验,如:        $x('//input[@name="ie"]')

(三)PyCharme中实现语句


1 基于id的定位
      driver.find_element_by_id('id)
2)基于name属性定位
      driver.find_element_by_name('name')
3)基于link text
      driver.get('http://www.baidu.com')
      lk = driver.find_element_by_link_text('新闻')
      lk.click()
4)基于partial_link_text,获取多元素时的操作
      dr = driver.find_elements_by_partial_link_text('百度')
      for d in dr:
           print(d.text)
5 基于classname定位
      dr = driver.find_element_by_class_name('wrapper_new')
      print(dr.text)
6)基于tagname定位
      dr = driver.find_elements_by_tag_name('input')
      for d in dr:
           print(d)
7)基于 cssselector
     driver.find_element_by_css_selector('#kw').send_keys('Python')
8)基于xpath定位                   driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值