第15章:python自动化——八大元素定位法则

目录

一、HTML标签

二、八大元素定位法则

1. id定位

2. name定位

3. tagname定位

4. classname定位

5. link text定位

6.partial link text定位

7. css selector

8. xpath定位

三、XPATH元素定位详解

1.xpath基础

2.xpath的进阶


一、HTML标签

每一个页面在用户访问的时候,都是呈现的HTML页面,想要获取页面中的任何元素,都需要先读懂html的基本内容

  1. 每一个HTML页面,都会是基于html标签开始的。是以树状菜单的结构形态来展示。

  2. 页面的所有我们需要关注的内容,都在body标签下。

  3. 所有的元素其实都是标签,每一个标签的组成,基本三要素:标签名称(TagName)、属性(Attribute)、文本(Text)

  4. 常见的标签名称:a/div/span/i/tr/td/input/p/form.....

  5. 在页面中不能够通过样子来判断标签类型,必须要通过开发者工具看标签名称来判定标签的类型。

详细了解HTML知识请点下方的链接学习:

HTML基础知识

二、八大元素定位法则

针对不同的元素,要进行操作之前,必须要先进行元素的定位。
在定位元素的方法选择上没有固定,什么方便用什么。

八大元素定位法则:
    1. id:通过元素的id属性来进行元素的获取,一般id是不会重复的。类似于人的身份证号码
    2. name:通过元素的name属性来进行元素的获取,一般有可能会重名。类似于人的姓名
    3. tagname:通过元素的标签名称来进行元素的获取,一定会重名,一般在自动化中几乎不用,在爬虫领域用的比较多。
    4. classname:通过元素的class属性来进行元素的获取,不特别推荐用此方法定位,因为class值可能会特别长,所以在读代码时不会特别友好
    5. link text:通过元素的文本来进行定位,只能用于a标签的元素进行定位
    6. partial link text:与link text一样通过文本来定位,只是说通过模糊查找的方式来实现元素的定位,类似于sql中like %s%,同样也只能用于a标签
    7. css selector:定位界的万金油,定位核心是基于class属性来进行定位的
    8. xpath:定位界万金油too,定位核心是基于树状结构来进行定位

元素定位方法:
driver.find_element(by,value)

元素的css selector和xpath都是可以通过copy来获取。这是最基本的应用手段。
如果在元素定位的过程中,遇到有重复属性,导致定位无法精准,Selenium定义下,如果有多个元素相同,则默认返回第一个

 copy定位的方式是打开开发者工具,右键想要复制的元素位置,如下图所示:

1. id定位

# id元素定位
driver.find_element("id", 'header')

2. name定位

# name元素定位
driver.find_element('name', 'q')

3. tagname定位

tagname获取元素
driver.find_element('tag name', 'input')

4. classname定位

classname定位元素
driver.find_element('class nanme', 'fl js_topSearch seachBtn')

5. link text定位

# link text定位元素
driver.find_element('link text', '特殊场合')

6.partial link text定位

# partial link text定位元素
driver.find_element('partial link text', '婚')

7. css selector

# css selector定位元素
driver.find_element('css selector','#owl-fecshop > div.owl-wrapper-outer > div > div:nth-child(2) > div > a > img')

8. xpath定位

# xpath定位元素
driver.find_element('xpath', '//*[@id="owl-fecshop"]/div[1]/div/div[2]/div/a/img')

三、XPATH元素定位详解

1.xpath基础

xpath定位方法:根据树状结构来进行元素的获取,类似于操作系统的文件系统,因为需要从html标签开始查找,所以整个元素定位的速度相对css selector会更慢一些。
在元素定位和自动化执行的过程中,我们最优先关注的是稳定性,再才是效率
相对路径和绝对路径的概念:
    绝对路径:/html/body/div[1]/div/div[1]/div/div/div/div/div[1]/div 阅读太差,维护太差,所以基本不会使用绝对路径来定位元素,除非实在搞不定
    相对路径:
    //*[@alt]
    //*[@rel="nofollow" and @class="mycoount"]
    //*[@id="owl-fecshop"]
    //*[text()="我的账户"]
    //  从根路径下开始查找
    *   任意元素
    []  添加筛选条件
    @   表示基于属性来查找
    id  表示属性名称
    ="owl-fecshop"  表示属性的值
    and 表示多条件筛选
    text()  表示文本信息

2.xpath的进阶

    1. 元素定位,在开发者工具中,直接通过ctrl+F的搜索框进行元素的确认即可
    2. 是可以相对路径+绝对路径来进行定位的:
        查找子级:
            //li[@class="store_lang"]/a
        查找父级:
            //li[@class="store_lang"]/..
    3. xpath支持函数的应用,主要使用的函数是contains()
        //a[contains(text(),"中")]
        //a[contains(@id,"中") and @rel and @class]
    4. 一定用手写xpath,不要用复制的xpath
        1. 提升可读性与维护性
            //li[@class="store_lang"]/..
        2. 随着你经验增加,手写会更加有效率
        3. 提升元素定位的准确性
            1. 前端界面的质量决定
            2. 解决动态元素的定位:动态元素,即属性会动态改变的元素
    5. 伪元素:正常定位即可

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值