-
/a[text()='忘记密码']查看全部
-
>子节点查看全部
-
^属性值以什么开始 $属性值以什么结束 *属性值包含查看全部
-
.class.class追加class查看全部
-
css 定位 #代表id .代表class查看全部
-
1.在concle中输入$x['xpath']可以查看有多少xpath的元素查看全部
-
Elements页签可以点击向右展开子元素,向左则收起
查看全部 -
总结:此课程学了大部分,基本完全学完。对于感觉已经会的,就没有听了。
查看全部 -
TryXpath。更好用
查看全部 -
这一套课程内容
查看全部 -
查找父节点查看全部
-
语法://tag[contains(attribute,'value')]
示例:
使用text()代替属性
//a[contains(text(),'忘记密码')]
使用属性时需要加上@,使用and来限制多个包含条件
例://a[contains(@class,'login') and contains(@text(),'登')]
查看全部 -
第三章笔记:
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>
div[class='search-area']—————>1个匹配的节点,完全等于search-area的。
div[class^='search']—————>2个匹配的节点,以'search'开头的。
div[class='search-warp']—————>0个匹配的节点,'search-warp'是不完整的(第1行)。
div[class$='area']—————>1个匹配的节点,以'area'结尾的。
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的顺序没有影响。
查看全部
举报