Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2226906
  • 博文数量: 287
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2130
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(287)

分类: Python/Ruby

2019-05-15 10:01:12

前言: 定位元素
  1. 谷歌浏览器使用开发者工具定位(XPath)
         使用开发者工具(F12),Elements 可以用指针查看到需要定位的元素,然后 ctrl+f 
            

输入 //input[@placeholder='请输入待测设备上WIFI模块的MAC地址'] 发现只有一个,那这个XPATH就是正确的

一、使用CSS定位元素
  1. CSS ID选择器查找元素
原则:唯一匹配
例外:除非想要查找一批元素的集合
语法:tag[attribute='value']
  • "#"  代表  id
  • "."   代表 Class
示例:
  • a[id='js-signin-btn']
  • #js-signin-btn
  • a#js-sign-btn
  1. CSS 类选择器查找元素
示例:
  • .icon-shopping-cart
  • span.icon-shopping-cart
  • span[class='icon-shopping-cart'
这里有几个值得注意的地方
示例的前两个 .icon-shopping-cart 都是模糊匹配,但是第三个是精确匹配
也就是说如果元素是 ,那么三个语句都能匹配上
如果元素是 ,那么只有前两个可以匹配上,第三个不可以,需要把第三个改为span[class='icon-shopping-cart  js-connt'
追加类:
.class1.class2.class3 ---> 直到找到唯一的元素
上例可以也写成 .icon-shopping-cart.js-connt   顺序无所谓
3. CSS选择器--通配符查找元素
语法:
"^" ---> 代表文本的开始
"$" ---> 代表以什么文本结束
"*" ---> 代表包含什么文本(模糊匹配)
tag[attribute通配符='value' ]
div[class='search-area']
div[class^='search']
div[class$='area']
div[class*='ch-ar']
不限制必须是class
div[action-type^='my']
4.CSS选择器--查找子节点
举例:
li>#js-signin-btn div>.search-input
div>h1 div>label
ul>li>a.shop-cart-icon
ul>li>#shop_id
二、XPATH定位元素
语法:
        //tag[@attibute='value']
        "attibute" 可以是任何标签,包括 id ,class 等

  1. xpath的单双斜线
        XPath的绝对路径用单斜线 "/"
        举例:
                /html/body/div[1]/div/div[2]/ul/li[2]/a/span[2]
        Xpath的相对路径用双斜线 "//"
        举例:
        //li[@id="shop-cart"]/a/span[2]

单双斜线的区别:
        "/" :元素是上一级节点的子节点中的一个,不能跳级
        "//":下级任何子节点或者任何嵌套子节点中的一个,可以跳级
举例:
//*[@id="main-html"]/body/div[2]//input
/html/body/div[2]/div/input
//body/div[2]//input

  1. XPATH优化
原始: //li[@id="shop-cart"]/a/span[1]       
优化: //li[@id="shop-cart"]//span[2]            只查找 li 下的第二级的span,跳过了对 a 标签的依赖

  1. 用 text 属性定位XPATH
原始://a[@id='js-signup-btn']
使用text定位(=号定位):
          //a[text()='登录 ']
        使用 = 号,必须是完全相等,空格也不能省略
使用text定位(contains定位):
         //a[contains(text(),'登录')]
使用contains进行模糊匹配,当然contains 不一定只适用于text(),任何其他的元素都可以,使用其他元素时,前面需要加 @ ,例如 contains(@class,'ng-binding')

  1. XPATH的条件组合:
         举例: 
                 使用=号组合:  //a[@class="ng-binding" and text()="下载中心"]
                 使用contains组合: //a[contains(@class,"ng-binding") and contains(text(),"下载中心")]
                 使用=号和contains组合: //a[contains(@class,"ng-binding") and text()="下载中心"]
 
  1. 用starts-with关键字查找元素
示例:
//a[starts-with(text(),"下载中")]
  1. 如何查找父节点、前后平级节点
语法:
父节点: xpath//parent::
前面的平级节点: xpath//preceding-sibling::
后面的平级节点: xpath//following-sibling::
举例:
节点://a[text()="联系我们"]
父节点: //a[text()="联系我们"]//parent::li
父节点的前面的平级节点: //a[text()="联系我们"]//parent::li//preceding-sibling::li[2]
父节点的后面的平级节点: //a[text()="联系我们"]//parent::li/following-sibling::li[2]


           

阅读(248394) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~