属性值中标签含义
- // 双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回
- / 单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作
- /text() 获取当前路径下的文本内容
- /@xxxx 提取当前路径下标签的属性值
- | 可选符 使用|可选取若干个路径 。如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签。
- . (点) 用来选取当前节点
- .. (双点) 选取当前节点的父节点
x-path元素定位方法:
1. 属性值模糊匹配(最强大的方法)
By.xpath("//tag-name[contains(@id,'hello')]")——匹配属性值中包含hello的id属性
By.xpath("//tag-name[start-with(@id,'nice')——匹配开始位置包含nice的id属性
By.xpath("//tag-name[ends-with(@id,'good')——匹配末尾位置包含good的id属性
以下对contains( ) 方法进行举例:
-
公司的考勤系统的,登陆用户名
-
<div class="eleWrapper" title="请输入用户名"><input type="text" class="textfield" name="ID9sLJQnkQyLGLhYShhlJ6gPzHLgvhpKpLzp2Tyh4hyb1b4pnvzxFR!-166749344!1357374592067" id="nt1357374592068" /></div>
-
解决方法
使用xpath的匹配功能,//input[contains(@id,'nt')]
其他两种方法类似,不再举例说明。
2. 使用xpath属性定位
By.xpath("//tag-name[@id='kw1']")
By.xpath("//tag-name[@type='name' and @name='kw1']")
3.通过元素索引定位
By.xpath("//tag-name[4]")
4. 通过绝对路径做定位(相信大家不会使用这种方式)
By.xpath("html/body/div/form/input")
By.xpath("//tag-name")