精华内容
下载资源
问答
  • selenium自动化测试中,元素定位是有8种基本方式,如id、Name、class、CSS、XPath、link_text等。方法多样,但是具体的定位中如何选择何种定位比较合适? 如何能跳出定位错误的坑,如何能准确的定位到元素呢?这是...

    selenium自动化测试中,元素定位是有8种基本方式,如id、Name、class、CSS、XPath、link_text等。方法多样,但是具体的定位中如何选择何种定位比较合适? 如何能跳出定位错误的坑,如何能准确的定位到元素呢?这是值得我们思考的问题。

    首先我们会疑问为什么要选择xpath定位呢?它有什么优势?这是大部分的人的疑问。xpath定位在定位路径的基础上结合了id、name、class等属性,让定位更准确。相比单个id、name、class属性定位,xpath定位的优势是很明显的。下面我们对xpath做详细的介绍。文章中有疏漏的地方请多包涵。

    xpath常用符号

    /   表示绝对路径绝对路径是指从根目录开始

    //   表示相对路径

    .   表示当前层

    ..   表示上一层

    *   表示通配符

    @   表示属性

    []   属性的判断条件表达式

    xpath常用函数

    contains ():  xpath(‘//div[contains(@id,”widget”)]’),选择id属性中包含'widget'的div

    text():    xpath(‘//a[text()=”hello world”]’),选择文本值为'hello world'的节点

    last():     选择最后一个

    starts-with():  xpath(‘//div[starts-with(@id,”common”)]’),选择id属性中’common’开头的div节点

    not():       否定

    xpath绝对路径定位

    从html标签开始,一层一层往下写标签,直到这个标签位置。

    比如:dr.find_element_by_xpath("/html/body/div[2]/form/input")

    div][2] 代表第2个 div标签,注意,索引从1开始而不是0,此方法缺点显而易见,当页面元素位置发生改变时,都需要修改。这种定位标签需要一个个的找,也是比较麻烦的事情。因此,并不推荐使用。

    Xpath相对路径定位

    相对路径,以‘//’开头,具体格式为 xxx.find_element_by_xpath("//标签")

    比如:dr.find_element_by_xpath("//input[x]")     #定位第x个input标签,[x]可以省略,默认为第一个

    相对路径的长度和开始位置并不受限制,也可以采取以下方法:

    xxx.find_element_by_xpath("//div[x]/form[x]/input[x]"),      [x]依然是可以省略的

    xxx.find_element_by_xpath("//*[x]/form[x]/input[x]"),         用*代替tag标签

    xpath标签属性定位

    标签属性定位,相对比较简单,也要求属性能够定位到唯一元素,如果存在多个相同条件的标签,默认只是第一个,具体格式dr.find_element_by_xpath("//标签[@属性=‘属性值’]")

    属性判断条件:最常见为id,name,class等等,目前属性的类别没有特殊限制,只要能够唯一标识一个元素都是可以的

    具体例子:

    dr.find_element_by_xpath("//a[@href='/industryMall/hall/industryIndex.ht']")

    dr.find_element_by_xpath("//input[@value='确定']")

    dr.find_element_by_xpath("//div[@class = 'submit']/input")

    当某个属性不足以唯一区别某一个元素时,通过逻辑运算符and去定位 ,具体例子:

    dr.find_element_by_xpath("//input[@type='name' and @name='kw1']")

    当标签属性很少,不足以唯一区别元素时,但是标签中间中间存在唯一的文本值,也可以定位,其具体格式:   dr.find_element_by_xpath("//标签[contains(text(),'文本值')]")

    具体例子:xxx.find_element_by_xpath("//iunpt[contains(text(),'型号:')]")

    注意:尽量在html中复制此段文本,避免因为肉眼无法分辨的字符导致定位失败

    xpath截取文字定位

    其他的属性值如果太长,也可以采取截取文字方法定位,请看示例

    属性higy=‘https://blog.csdn.net/huiseqiutian/article/details’

    dr.find_element_by_xpath(“//a[contains(@higy,‘details’)]”)

    xpath网页中的动态属性定位

    例如,在某些网页中动态生成id属性值,可以有以下方法:

    1.starts-with例子: //input[starts-with(@id,'ctrl')]            解析:匹配以ctrl开始的属性值

    2.ends-with例子://input[ends-with(@id,'_userName')]       解析:匹配以userName结尾的属性值

    3.contains()例子://Input[contains(@id,'userName')]        解析:匹配含有userName属性值

    展开全文
  • 自动化测试 xpath的扩展定位使用 #text xpath driver.find_element_by_xpath(’//[@text=“搜索”]’).click() #id xpath driver.find_element_by_xpath(’//[@resource-id]=“me.onehome.app:id/doSearch”’)....

    #text xpath
    driver.find_element_by_xpath(’//[@text=“搜索”]’).click()
    #id xpath
    driver.find_element_by_xpath(’//
    [@resource-id]=“me.onehome.app:id/doSearch”’).click()
    #组合text resource-id
    driver.find_element_by_xpath(’//[@resource-id=“me.onehome.app:id/doSearch”][@text=“搜索”]’).click()
    #class text
    driver.find_element_by_xpath(’//android.widget.TextView[@text=“搜索”]’).click()
    #content-desc
    driver.find_element_by_xpath(’//
    [@content-desc=""]’).click()
    #contints包含
    driver.find_element_by_xpath(’//*[contains(@text,“搜索”)]’)

    展开全文
  • #自动化测试Xpath元素定位方法 ##▲ 相对定位 //div ##▲ 使用索引定位元素 //input4 //ul1//li4 ##▲ 单属性定位: //标签名[@属性名称=值] //div[@class=“main”] //input[@id=‘fuck’] ##▲ 组合属性定位://...

    自动化测试Xpath元素定位方法

    • 相对定位

      //div

    • 使用索引定位元素

      //input[4]
      //ul[1]//li[4]


    • 单属性定位: //标签名[@属性名称=值]

      //input[@id=‘fuck’]
      //div[@class=“main”]


    **//div[@class="cell"]**



    • 组合属性定位:

      //标签名[@属性名称=值 and @属性名称=值 and @属性名称=值]
      //input[@type=“text” and @placeholder=“请输入注册地址”]
      //input[@type=‘submit’][@name=‘fuck’]
      //input[@type=‘submit’ or @name=‘fuck’]


    • 使用XPATH及属性名称定位元素

      元素属性类型:@id 、@name、@type、@class、@tittle、@maxlength

      //查找所有input标签中含有type属性的元素
      //input[@type]


    • 部分属性值匹配

      contains(@属性名,‘属性值的一部分‘)
      //input[start-with(@id,‘fuck’)] 匹配id以fuck开头的元素,id=‘fuckyou’
      //input[ends-with(@id,‘fuck’)] 匹配id以fuck结尾的元素,id=‘youfuck’
      //input[contains(@id,‘fuck’)] 匹配id中含有fuck的元素,id=‘youfuckyou’
      举例://a[contains(@href, ‘logout’)]


    • 使用任意值来匹配属性及元素

      //input[@=‘fuck’] 匹配所有input元素中含有属性的值为fuck的元素

      //input[@=‘请输入工号’]

    在这里插入图片描述


    • text()

      函数文本定位 —— contains(text(),‘文本内容的一部分‘)
      //a[text()=‘百度搜索’]
      //div[contains(text(),‘通讯录’)] --文本模糊定位

    在这里插入图片描述


    • 如果页面存在2个一模一样的元素,只是位置不同
      定位方式如下:从父类开始找,父类还不能唯一确定,继续从父类的父类就找
      //div[@class=“main”]//label[@name=‘fuck’]
    展开全文
  • Selenium自动化测试(三)之xpath元素定位xpath元素定位节点(Node)在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。选取节点XPath 使用路径表达式来...

    Selenium自动化测试(三)之xpath元素定位

    xpath元素定位

    1895590-20200110091855648-224587442.png

    节点(Node)

    在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

    选取节点

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

    谓语(Predicates)

    谓语用来查找某个特定的节点或者包含某个指定的值的节点。

    谓语被嵌在方括号中。

    路径表达式:

    表达式

    描述

    /

    从根节点选取

    //

    从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

    @

    选取属性。

    选取未知节点

    XPath 通配符可用来选取未知的 XML 元素。

    通配符

    描述

    *

    匹配任何元素节点。

    @*

    匹配任何属性节点。

    选取若干路径

    通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

    //div | //a

    在python中使用xpath定位元素:

    browser.find_element_by_xpath("//input[@id='kw']")

    1895590-20200109135330134-465936221.png

    1、通过id属性进行定位元素(如果不知道具体的标签名可以用通配符*代替)

    //*[@id='kw']

    //input[@id='kw']

    //a[@id='quickdelete']

    2、通过name属性进行定位元素

    //input[@name='wd']

    3、通过class属性进行定位元素

    //input[@class='s_ipt']

    //a[@class='quickdelete']

    4、通过id和class属性进行定位元素(多个属性一起定位的时候用and隔开)

    //input[@id='kw' and @class='s_ipt']

    //a[@id='quickdelete' and @class='quickdelete']

    contains()函数,xpath其他函数

    1895590-20200109140935486-209544249.png

    上面这个div中的class中的属性值为's-skin-hasbg white-logo s-opacity-0',属性中有空格,这个时候就没办法使用[@class='s-skin-hasbg white-logo s-opacity-0'],

    这个时候就需要使用xpath中的contains函数进行操作,只需要属性值中的一部分就可以实现元素定位。

    //div[contains(@class,'white-logo')]

    text文本定位

    text 文本在 web 自动化测试当中,不是元素属性,

    不能使用 @符号去表示。

    通过text()进行定位元素

    //*[contains(text(),'新')]

    索引

    xpath中索引是以1开始的。

    一般来说,我们不会去使用 索引进行元素定位

    索引的优先级非常高,手工提升其他部分的优先级,最后才使用索引。

    //*[contains(text(),'新')][1]

    1895590-20200109141933547-2012748412.png

    组合上下级的关系

    /表示父子关系

    //表示子孙关系

    # 通过父级元素定位到下面的所有的img元素

    //div[@id='lg']//img

    # 精确到某一个img

    //div[@id='lg']//img[@id='s_lg_img']

    xpath轴:轴可定义相对于当前节点的节点集。

    1895590-20200110094606938-322024918.png

    1895590-20200109144537743-835023061.png

    # ancestor--选取当前节点的所有先辈(父、祖父等)。

    //div[@class='show-weather']//ancestor::*

    # ancestor-or-self--选取当前节点的所有先辈(父、祖父等)以及当前节点本身。

    //div[@class='show-weather']//ancestor-or-self::*

    # attribute--选取当前节点的所有属性。

    //div[@class='show-weather']//attribute::*

    # child--选取当前节点的所有子元素。

    //div[@class='show-weather']//child::*

    # descendant--选取当前节点的所有后代元素(子、孙等)。

    //div[@class='show-weather']//descendant::*

    # descendant-or-self--选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

    //div[@class='show-weather']//descendant-or-self::*

    # following--选取文档中当前节点的结束标签之后的所有节点。

    //div[@class='show-weather']//following::*

    # parent--选取当前节点的父节点。

    //div[@class='show-weather']//parent::*

    # preceding--选取文档中当前节点的开始标签之前的所有节点。

    //div[@class='show-weather']//preceding::*

    # preceding-sibling--选取当前节点之前的所有同级节点。

    //div[@class='show-weather']//preceding-sibling::*

    # self--选取当前节点。

    //div[@class='show-weather']//self::*

    什么时候使用 xpath

    没有明显特征(id, name, class_name)的元素

    name、class_name能找到多个元素

    css 和 xpath 的区别

    1、css 更加简洁

    2、xpath 的功能更强大。对于简单的元素定位可以使用css, 复杂的元素使用xpath.

    3、xpath 可以使用 text 文本定位, css 不行。

    4、效率。通常来说,xpath 的解析效率会低。css 要快一些。

    【完】

    展开全文
  • 一、Selenium介绍Selenium是一个Web开源自动化测试框架,具有页面级操作、模拟用户真实操作、API从系统层面触发事件等特点。1.版本Selenium 1.0Sever/Client工作方式,可在本地或远程机器上运行基于JS注入的Case...
  • 你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负众望。谢谢!!!1.前提基于win10专业版64位系统+64位jdk1.8+64位python3.6.5+社区版pycharm...2.xpath八种定位方式xpath:即xml路径语言,通常用来在htm...
  • (给Python开发者加星标,提升Python技能)来源:...随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。因此,开发与测试人员在为手头的项目选择测试框架时,需要考虑许多方面的...
  • (点击上方公众号,可快速关注一起学Python)原文...随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。因此,开发与测试人员在为手头的项目选择测试框架时,需要考虑许多方面的...
  • 什么是xpath呢?官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记语言3的子集)文档中某部分位置的语言。反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来查找到这个元素的,...
  • 今日份问题我:手动就可以操作简单的测试,为什么要自动化测试老师:主要是回归测试。改了bug之后,重新再来测试。这样用回归测试就比手动测试要节约成本Appium+Python移动端实战一、前提开启模拟器(我的是直接用的...
  • find_element_by_xpath() 1.解决的问题: 无id name class属性 位置定位的元素为活动元素 2.Xpath定位策略: 1). 路径定位 (1) 绝对路径(从起始位置开始的路径) 以/开头。 说明 :从最外层元素到...
  • 选择根节点 根节点一层一层往下找 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 选取当前父节点 读取当前节点 选取属性 选取文档中的所有元素 ...‘[starts-with(@属性名.......
  • 求大神帮忙看一下,这个关闭按钮怎么定位,用css和xpath定位都不行不知道什么原因,他的上一个提交按钮时from里面的这个div里面的不知道有没有影响这个实在HTML中显示的代码这个是在firepath中显示的代码这个是我写...
  • xpath定位元素 选择根节点 ‘/’根节点一层一层往下找 '//'从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 ‘…’选取当前父节点 ‘.’读取当前节点 ’@[]’选取属性 ‘//@’选取文档中的所有...
  • 本章主要学习利用tag_name定位元素,通过百度搜索编辑框进行学习:find_element_by_xpath()方法用于 XPath 语言定位元素主要有一些几种方式:一、xpath的绝对路径进行定位:1 #coding=utf-82 from selenium import...
  • 你们公司自动化测试的流程是什么样的?自动化我们是在XX项目做的!我们项目自动化这一块主要做的是核心流程(冒烟用例)。使python和selenium编写自动化脚本,其中也使用unittest框架做脚本调试和运行,并且使用的Page...
  • title: Xpath 定位汇总 ...本文主要介绍 Xpath 定位的语句语法,应用场景为Web、APP UI自动化的元素定位中。 文章参考-https://blog.csdn.net/zyooooxie/article/details/83856854 什么是Xpath XPat...
  • # coding=utf-8”’这个例子里面,我们通过使用lxml来访问页面中xpath指定区域的链接xpath可以使用firefox的firebug获得,注意:有的时候通过firebug获得元素的xpath可能和urllib2获得的不同,这是因为firebug看到的...
  • Loadrunner适合大型项目,逻辑十分的复杂 定位元素有两种定位的方式 一种是xpath,一种是css xpath的讲解和使用 1,什么是xpath? XParh即为XML路径语言,它是一种用来(标准通用编辑语言的子集)在HTML\XML文档中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,095
精华内容 438
关键字:

自动化测试xpath