一篇文章掌握自动化之元素定位(保姆级教程)

1. 元素定位的概念

  • 自动化测试不仅仅是使用工具来模拟人工操作,它更是一种系统化、高效化的测试方法,旨在通过预设的脚本和工具,自动执行测试流程,减少人为错误,提高测试覆盖率和效率。是一个很好的就业方向,对于初学者来说,我们要入门,面临的第一个难点:元素定位。
  • 生活中的元素定位
    • 我们平时使用网站时,是手动移动鼠标实现的元素定位,例如:当我们需要使用百度搜索:‘软件测试’时,我们先得把鼠标移动到百度搜索框中,这个操作就是元素定位。
  • 在自动化测试中,我们需要使用工具来自动完成这一操作,这就是自动化测试中的元素定位。

2. 元素定位方法

  • 常用的元素定位方法有以下八种,总结如下:
  • 数据准备(百度搜索框)
    • <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
  1. 直接使用元素的属性定位
    • id定位

      使用举例:

              driver.find_element_by_id("kw")

      优点:

            在html中,元素的id属性是唯一的,因此使用简单、效率高

      缺点:

           并不是所有的元素都有id属性

           有写页面中,id属性是会动态变化(如:163邮箱登录页面中的iframe元素的id属性),此时就不能使用id属性定位

      • 动态id属性
    • name定位

      使用举例:

            driver.find_element_by_name("wd")

      优点:

             直接使用name属性定位,操作简单方便

      缺点:

            在html中,元素的name属性如果有重复,则不建议使用。

            检查是否重复的方法://*[@name='name属性值']

      • 多个元素的name属性相同
    • class定位

      使用举例:

            driver.find_element_by_class_name("s_ipt")

      优点:

           直接使用class属性定位,操作简单方便

      缺点:

          在html中,元素的class属性如果有重复,则不建议使用。

          在html中,一个元素可能存在多个class属性,此时一定要注意,只能选择其中之一,如:<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">,在百度按钮这个元素中,class属性值有4个,并用空格分隔的,此时只能选择其中的一个。

      • 一个元素有多个class属性值
  2. 标签名定位
    • 一般不用,页面中,标签名重复的太多了
  3. 链接文本定位
    1. Link Text定位(完整链接文本定位)

      使用举例:

              driver.find_element_by_link_text("超链接文本")

      优点:

            操作简单方便

      缺点:

           仅适用于超链接元素(a标签元素)

            文本值如果有重复,则不建议使用

    2. Partial Link Text定位(部分链接文本定位)

      使用举例:

              driver.find_element_by_link_text("部分超链接文本")

      优点:

            和Link Text定位,只不过这个方法更加灵活,支持使用部分链接文本来定位元素

      缺点:

           同Link Text定位

  4. xpath定位
    1. 绝对路径定位

      介绍:从/html标签开始,一层层查找,直到定位元素

      获取方法:打开谷歌浏览器开发者工具,直接复制即可

      优点:使用简单,复制即可

      缺点:路径很长,这样写的自动化测试脚本稳定性很差,一般不建议使用

      谷歌浏览器复制xpath绝对路径
    2. 相对路径定位
      1. 也可以通过谷歌浏览器直接复制,但有的情况复制的路径存在问题,需要自己编写,总结如下(下述的方法一般结合起来使用):
        1. 标签定位

          1. 一般结合其它方式一起使用:

            //span:表示定位页面的中span标签元素

            //*:表示页面中的所有标签

        2. Xpath中使用属性定位元素

          1. 使用方法:

                //标签名[@属性名1='属性值1' and @属性名2='属性值2' ....] 

            优点:

                    可以使用元素中的任何一个属性或多个属性定位

            缺点:

                    可能存在多个元素的属性相同,无法定位元素的情况

        3. Xpath中使用索引定位元素

          1. 使用方法:一般结合其它方案一起使用

                //标签名[@属性名1='属性值1'] [1]

            使用场景:

                    当通过其它属性无法唯一定位到元素(即只能定位到一组元素),这时候可以使用索引,选择使用其中的第几个元素

            注意事项:

                    索引是从1开始,而不是从0

        4. Xpath中通过子元素定位父元素

          1. 使用方法:

                    //子元素/..

                    备注: ..表示上一层元素(即父元素)

            使用场景:

                    当子元素比较方便定位,但父元素不方便定位到时,使用这种方法会非常方便快捷

        5. Xpath中通过兄弟元素定位

          1. 使用方法:

                    //子元素/../目标元素

                    备注: ..表示上一层元素(即父元素)

            使用场景:

                    是父元素定位方法的延伸,更加丰富了xpath定位的灵活性

        6. Xpath中通过元素文本内容定位

          1. 使用方法:

                 //标签名[text()='文本内容']

            使用场景:

                   xpath中,如果有文本内容,也可以一并使用,以便定位元素。和Link Text定位方式不同,这种方法,适合所有的标签。而Link Text定位方式仅仅限于a标签

        7. 特殊用法

          1. 属性以xxx开头的元素

            1. /标签名[starts-with(@属性名,'xxx')]

          2. 属性中包含xxx的元素

            1. //*[contains(@属性名,'xxx')]

  5. CSS选择器定位(未完,待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值