为了账号安全,请及时绑定邮箱和手机立即绑定

web端功能自动化定位元素

夏天 软件测试工程师
难度初级
时长 1小时56分
学习人数
综合评分9.57
44人评价 查看评价
9.7 内容实用
9.7 简洁易懂
9.3 逻辑清晰
  • <div id="lbNormal" class="loginFuncNormal chromexPathFinder">邮箱帐号登录</div>

    .loginFuncNormal

    div.loginFuncNormal

    div[class='loginFuncNormal']

    查看全部
  • 查看是否是唯一:

    $x("//input[@name='email']")

    查看全部
  • Elements页签可以点击向右展开子元素,向左则收起

    查看全部
  • 总结:此课程学了大部分,基本完全学完。对于感觉已经会的,就没有听了。

    查看全部
  • TryXpath。更好用

    查看全部
  • 这一套课程内容

    查看全部
    0 采集 收起 来源:课程介绍

    2019-02-28

  • 第三章笔记:

    XPath定位元素

    • 一、有效的XPath。

    语法://tag[@attribute='value']       <**1、单引号2、区别在css选择器中:用>和不用@*>

    绝对路径:用单右斜线/               <**从根标签<html>开始,用单右斜线/,弊端在中间有一个的标签tag变更的话就需要修改。*>

    相对路径:用双右斜线//              <**用双右斜线//先找到一个唯一id的元素,再用右斜线继续查找,比绝对路径精短了,如果用双右斜线//也可以避免中间的标签变化。*>

    单右斜线:是在紧跟着的下一级子菜单操作。

    双右斜线:是在任意一个子菜单操作。

    例子1:

    <input type="button" value="登录" class="js-signup-btn moco-btn moco-btn-red moco-btn-lg xa-login">

    XPath定位元素:

    错误示范://input[@class='js-signup-btn']      ---->查找到元素0个元素。

    正确示范://input[@class='js-signup-btn moco-btn moco-btn-red moco-btn-lg xa-login']      ---->查找到元素1个元素。  

    <**找到标签<input>其class为js-signup-btn的元素,因为是等于号,id必须完全一致(后面用text()也是要完全一致,有空格也要空格一致)。*>

    • 二、用text()构建有效的XPath。

    语法://tag[text()='value']  <**text()是标签之间的文字<h1>哈哈</h1>*>

    例子2:

    <a href="/user/newforgot" class="rlf-forget r" target="_blank" hidefocus="true">忘记密码 </a>

    XPath定位元素:

    错误示范://a[text()='忘记密码']      ---->查找到元素0个元素。

    正确示范://a[text()='忘记密码 ']      ---->查找到元素1个元素。  <**找到标签<a>text为“忘记密码”的元素,因为是等于号,必须完全一致,有空格也要空格一致;text不用@符号。使用单引号。*>

    • 三、用Contains关键字构建有效的XPath。

    语法:①//tag[contains(attribute,'value')]  <**contains含有属性attribute值的value值的元素*>

    ②用到两个contains的例子见例子4。

    例子3:

    <p>用例2的HTML代码。</p>

    XPath定位元素:

    错误示范://a[contains(text(),'忘记密码')]      ---->查找到元素1个元素。

    正确示范://a[contains(text(),'忘记密码 ')]      ---->查找到元素1个元素。

    正确示范://a[contains(text(),'忘记密码 ')]      ---->查找到元素1个元素。  <**找到标签<a>属性text含有“忘记密码”的元素,contains()里面用逗号和使用单引号。*>

    例子4:

    <input type="text" value maxlength="37" name="email" class="xa-emailOrPhone ipt ipt-email js-own-name" placeholder="请输入登录邮箱/手机号">

    XPath定位元素:

    正确示范://input[contains(@class,'ipt') and contains(@placeholder,'手机号')]      ---->查找到元素1个元素。  <**找到标签<input>属性class含有“ipt”的元素和同时满足属性placeholder含有“手机号”的元素,contains()里面用逗号和使用单引号,用and连接。*>

    • 四、用starts-with关键字。

    语法://tag[starts-with(attribute,'value')]  <**属性attribute值以value值为开头的元素*>

    <input type="text" value maxlength="37" name="email1" class="xa-emailOrPhone ipt ipt-email js-own-name" placeholder="请手机号">
    <input type="text" value maxlength="37" name="email2" class="ipt ipt-pwd js-login-pwd" placeholder="请登录邮箱">
    <input type="text" value maxlength="37" name="email3" class="ipt ipt-verify l" placeholder="请登录邮箱/手机号">

    要求定位到第一条。

    错误示范://input[starts-with(@class,'ipt')]      ---->查找到元素2个元素。 

    正确示范://input[starts-with(@class,'xa-emailOrPhone')]      ---->查找到元素1个元素。  <**找到标签<input>属性class含有“ipt”的元素,用ipt开头查找时会有后两个的input,所以用xa-emailOrPhone在开头的样式(确实就是写在class引号(“”)里面的前边的位置的原因)可以使用starts-with的方法查找元素*>

    • 五、通过一个xpath路径寻找。

    <p>因为这个标签没有明显的class、id、text等属性的时候,使用向父级查找,向上或向下的平级查找来确认元素。</p>

    5.1通过一个xpath路径寻找父节点。

    语法:已定位的xpath元素//parent::tag

    5.2通过一个xpath路径寻找前面平级节点。

    语法:已定位的xpath元素//preceding-sibling::tag

    5.3通过一个xpath路径寻找后面平级节点。

    语法:已定位的xpath元素//following-sibling::tag

    <**注意:1、已经定位到的元素后面写//双右斜线^_^。2、::后面不要带尖括号<>而是直接写标签td。3、平级的前后是数组,向前:[3][2][1][我],向后:[我][1][2][3],离我近的是[1]。*>

    六、练习:

    答案://div[@id='zc_k']//td[text()='中国银行']//following-sibling::td

    <**相对路径用了双右斜线//,div到td中间的路径用了双右斜线//呐^_^,最后一个是平级向下查找td,td等标签可写成数组td[ ]样式*>

    答案:问:有什么不同的方法来写XPath?哪一个最好?或最快?

    答:XPath有@【id、@class、text()、contains()、starts-with、无明显属性时的用已定位的路径的父级或平级的方法】等方法来书写XPath查找元素。

    最好是css\id\class\name?查找元素时,如果id的元素是唯一的,用id是最快的;如果name唯一,也可以用name,也行也快,然后是css,如果最后都定位不到元素的话,那就用XPath来定位。没有唯一的id\name之类的,就用XPath来定位。XPath虽然能慢一点,但是肯定能定位到元素。

    (小言:用id、class定位的方法【findElement(By.className("js-signup-btn"))的方法,不是XPath方法,是这个意思吧?我的理解了~~~所有不对的望指教^_^】,XPath为什么不优先呢?就是……百度吧……)


    查看全部
  • 通配符查找元素:

    <a href="#" title="首页"></a>
    <div class="search-warp clearfix" >
        <div class="pa searchTags">
            <a href="//class.imooc.com/sc/20" target="_blank">前端入门</a>
            <a href="//class.imooc.com/sc/18" target="_blank">java基础</a>
         </div>
     <div  class="search-area" data-search="top-banner">
     </div>
    1. div[class='search-area']—————>1个匹配的节点,完全等于search-area的。

    2. div[class^='search']—————>2个匹配的节点,以'search'开头的。

    3. div[class='search-warp']—————>0个匹配的节点,'search-warp'是不完整的(第1行)。

    4. div[class$='area']—————>1个匹配的节点,以'area'结尾的。

    5. div[class*='warp']—————>1个匹配的节点,包含'warp'的元素。

      例子1:a[title*='页']—————>1个匹配的节点

      例子2:a[title$='网页']—————>1个匹配的节点

    注意:1、不带@;

    2、引号为单引号‘’。

    查看全部
  • 一、公式定位:必须完整、完全一致。

    span[class='span.icon-shopping-cart'] 发现定位不到该元素,因为元素的的class有2个:icon-shopping-cart  js-endcart,要写作:span[class='span.icon-shopping-cart  js-endcart'] 

    二、追加定位:

    <ul class="header-unlogin clearfix">

    在dom里搜索:.clearfix会搜多到124个,追加就是:.clearfix.header-unlogin会搜索到1个。

    两个className的顺序没有影响。

    查看全部
  • 使用starts-with定位关键字匹配元素

    语法://tag[start-with(attribute,'value')]

    注意:如果页面元素中使用的属性,需要在attribute前加@

    定位目标为:<input type="text" value="" maxlength="37" name="email" data-validate="require-mobile-phone" autocomplete="off" class="xa-emailOrPhone ipt ipt-email js-own-name" placeholder="请输入登录邮箱/手机号">

    例如://input[starts-with(@class,'xa-emailOrPhone ipt ipt-email js-own-name')]

    如果这个class唯一性比较强,那么甚至可以只使用前面的几个字符就可以定位,如:xa-email

    也可以使用placeholder来定位

    例如://input[starts-with(@placeholder,'请输入登录邮箱/手机号')]

    查看全部
  • 使用contains关键字匹配xpath

    语法://tag[contains(attribute,'value')]

    示例:

    使用text()代替属性

    //a[contains(text(),'忘记密码')]  

    使用属性时需要加上@,使用and来限制多个包含条件

    //input[contains(@class,'ipy') and contains(@placeholder,'手机号')]

    查看全部
  • 使用text匹配xpath

    语法://标签[text()='文本内容']

    示例:默课网登录页面的忘记密码

    //a[text()='忘记密码 ']

    查看全部
  • xpath定位元素

    语法://tag[@attibute='value']

    绝对路径使用/,不能跳级,如:/div/li,li中的元素一定是紧挨着div这一级

    相对路径使用//,可以跳级,//下的元素是任意一级下的元素,只要id或者class匹配

    查看全部
  • 查找子节点符号:>

    例如查找一个子节点下的id:

    div>ul>li>div[class='app-load-box clearfix js-load-box']


    div>li.class名称

    div>ul>li#id

    查看全部
  • CSS中使用通配符匹配

    "^"  代表以文本开头匹配

    "$"  代表以文本结束匹配

    "*"  代表以文本内容匹配

    语法: tag[attribute通配符='value']

    查看全部

举报

0/150
提交
取消
课程须知
1.不需要有编程和自动化测试经验,初学者可以很容易上手 2.浏览器 (Firefox or Chrome) 3.Windows 电脑
老师告诉你能学到什么?
用不同浏览器查看元素 重点讲xpath 和 css 选择器定位这些是怎么创建的 学完了这些页面上所有元素都能定位到了

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!