zoukankan      html  css  js  c++  java
  • 定位屡试不爽

    xpath表达式的基本格式

     1 # 斜杠(/)作为路径内部的分割符。
     2 
     3 # 同一个节点有绝对路径和相对路径两种写法。
     4 
     5 # 绝对路径(absolute path)必须用"/"起首,后面紧跟根节点,比如/step/step/...。
     6 
     7 # 相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step,也就是不使用"/"起首。
     8 
     9 # "."表示当前节点。
    10 
    11 # ".."表示当前节点的父节点
    12 
    13 - nodename(节点名称):表示选择该节点的所有子节点
    14 
    15 - "/":表示选择根节点
    16 
    17 - "//":表示选择任意位置的某个节点
    18 
    19 - "@": 表示选择某个属性
    20 
    21 # "*"表示匹配任何元素节点。
    22 # "@*"表示匹配任何属性值。
    23 
    24 # node()表示匹配任何类型的节点。

    1、通过绝对路径做定位

    1 By.xpath("html/body/div/form/input")
    View Code

    2、通过标签tag做定位

    1 By.xpath("//input")
    View Code

    3、通过元素索引定位

    1 By.xpath("//input[4]")
    View Code

    4、使用xpath属性定位

    1 By.xpath("//input[@id='kw1']")
    2 By.xpath("//input[@type='name' and @name='kw1']")
    View Code

    5、使用部分属性值匹配

    1 By.xpath("//input[start-with(@id,'nice')
    2 By.xpath("//input[ends-with(@id,'很漂亮')
    3 By.xpath("//input[contains(@id,'那么美')]")
    View Code

    6、针对复杂的定位(页面上有多个相同的属性),下面几种方法可做首选

    第一种:通过从下往上找的方式查找到想找的元素

     1 xpath=//td[@field="ProjectNo"]/ancestor::table[@class="datagrid-btable"]/tbody/tr[1]/td[2]/div[1] 

    第二种,从上玩下找的方式查找到想找的元素

    xpath=.//div[@class="panel" and contains(@style,"display: block")]//span[text()="查询"]/..
    查找按钮

  • 相关阅读:
    爬虫——Selenium与PhantomJS
    爬虫——多线程糗事百科案例
    爬虫——json模块与jsonpath模块
    爬虫——使用BeautifulSoup4的爬虫
    爬虫——BeautifulSoup4解析器
    爬虫——爬取百度贴吧每个帖子里面的图片
    爬虫——爬虫中使用正则表达式
    爬虫——正则表达式re模块
    爬虫——requests模块
    爬虫——Handler处理器 和 自定义Opener
  • 原文地址:https://www.cnblogs.com/xiaoyaowuming/p/5801924.html
Copyright © 2011-2022 走看看