web自动化测试Xpath定位

find_element_by_xpath()

1.解决的问题: 
                 无id name class属性
                 位置定位的元素为活动元素

2.Xpath定位策略:

1). 路径定位 
                 (1)  绝对路径(从起始位置开始的路径)  以/开头。
                   说明 :从最外层元素到指定元素之间所有经过元素层级路径;如 /html/body/div/p[0]
                   快速生成: 使用Firebug快速生成xpath的绝对路径(在HTML菜单下右击复制xpath)

   
                  (2 ) 相对路径(从中间开始的路径) 以//开始
                    说明:从第一个符合条件的元素开始(一般配合属性来区分);如//input[@id="user"]
                    解释//input[@id="user"] --- 匹配的是input属性标签,其中有id="user"属性
                    快速生成: 使用Fribug的Fripath来生成元素相对路径(选中元素右击复制最简xpath)

                  

2).利用元素属性 (xpath结合元素属性)

     说明 : 快速定位元素, 利用元素唯一属性   //*[@id="user"]

  解释    //*[@id="user"]
                                  匹配是所有含有 id=user 的标签
                                   在使用xpath路径的时候使用xpath里面的属性 @用来指明属性,做区分说明
                                    //input本身就可以定位到很多的表单, 指明一个属性就可以定位到具体某一个表单,这就是结合的方式

3).层级和属性结合

 说明 : 要找的元素没有属性, 但是它的父级有属性    //*[@id="user"]/input

解释    //*[@id="user"]/input
                                  匹配的input标签,因为没有属性找的父级标签
                                  相对路径所有标签,含有id="user"属性标签的下级input标签


4).属性和逻辑结合

说明 元素之间相同的属性同名怎么办?

解释    //*[@id="user" and @class="Tel"]
                                  匹配的所有id属性好几个相同的,需要用两个属性去定位

                                  用与去结合另一个元素去解决相同的属性同名问题

5) 文本内容是??的元素
      5.1)快速定位文本的方式

    页面元素 ,<a id=name > zhangsan</a>              

    相对路径   文本定位 :   //*[text()='zhangsan' ]   
                      解释 定位文本为zhangsan的元素

          5.2)属性以??开头的元素

                //*[starts-with(@attribute,'??')] 

                starts-with为固定写法不能变,可变的只有红色字体部分

页面元素 <input  type="a" , place="文本测试"/> 
//*[starts-with(@place,'文本')]   
                        属性place以文本开头的元素xpath定位


          5.3)属性中含有??的元素

                 //*[contains(@attribute,'??')]

页面元素 <input  type="hel" , name="abc"/> 
//*[contains(@name,'a')]   
                        根据name属性包含a的元素 xpath定位

发布了106 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/object_oriented_/article/details/100049308