细节拿捏xpath定位

  • 6.xpath定位方式:表示的由xml(extend markup language)可扩展标记语言,也是由一系列标签所构成,主要是实现数据文件(用于做配置文件))+path,以xml格式的树状结构形式进行递归逐级定位
    •   xpath的定位方式两种方式:绝对路径定位、相对路径定位
    •   绝对路径:从顶级父标签到当前标签的整个结构过程称之为绝对路径;
        •     在使用绝对路径时,如果同级中存在多个相同的标签的话,则通过索引进行具体选择(其索引的初始值是从1开始);但是在实际脚本开发过程中,一般不用,因为如果使用绝对路径则跨度较大,只需要页面稍微修改结构则整个定位失败;(稳定性极差)
    •   相对路径:表示的是相当于当前标签而言;  
        •     i.属性定位语法://标签名[@属性名=属性值]
            •     注意:1.标签名可以具体,也可以使用*(表示的任意标签,定义的范围会比具体的标签更广,可能定位多个对象) 2.属性值如果是字符串的话则需要使用引号;
            • value='//*[@id="uname"]'
        •     ii.使用逻辑运算符进行实现多个属性的定位:and or 
            • 例子:
              //input[@id="uname" and @class="text"]
            • 但是一般组合的属性不会超过2个,因为设定属性过多其脚本的依赖性越高;
        •     iii.嵌入函数完成xpath定位:
            • 1.文本函数定位://标签名[text()=对应标签的文本内容]2.包含函数定位:
              •   文本内容中是否嵌入标签、文本内容表示的完整文本;
              • 例子:
                # 如果定位得到其中的一个元素,则该对象可以获取所有的其他属性信息
                get_element=driver.find_element(by=By.XPATH,value='//label[text()="请输入密码"]')
                print(get_element.get_attribute("class"))
            • 2.包含函数定位://标签名[contains(@属性名,对应属性值的部分值)]
              • 例子:  
                #3.通过属性值中的部分值进行定位
                driver.find_element(by=By.XPATH,value='//input[contains(@id,"na")]').send_keys("admin")
            • 3.以指定字符开头定位://标签名[starts-with(@属性名,对应属性名的前面部分值)]
            • 例子:
            • #4.以指定字符开头定位
              driver.find_element(by=By.XPATH,value='//input[starts-with(@id,"un")]').send_keys("admin")
            • 4.以指定字符结尾定位://标签名[ends-with(@属性名,对应属性名的前面部分值)]
            • 说明:一般starts-with,ends-with都可以使用contains完成;
posted @ 2022-09-28 14:53  我是江浩一哈  阅读(6)  评论(0编辑  收藏  举报