网站主页设计代码,深圳公明做网站,做网站 服务器价格,重庆市建设工程造价管理协会网站Xpath定位方法
1.根据路径定位
#绝对路径#xff1a;以/开头从html开始一级一级往下写
driver.find_element_by_xpath(路径) #选中元素-右击-copy full xpath
#相对路径#xff1a;以//开头 路径[第几个符合条件的元素]2.利用元素属性定位
//标签名[属性名属性值…Xpath定位方法
1.根据路径定位
#绝对路径以/开头从html开始一级一级往下写
driver.find_element_by_xpath(路径) #选中元素-右击-copy full xpath
#相对路径以//开头 路径[第几个符合条件的元素]2.利用元素属性定位
//标签名[属性名属性值]
标签名为* 匹配所有标签名3.属性与逻辑结合定位 #结合多个属性定位
//标签名[属性名1属性值1 and 属性名2属性值2...]
#如果遇到class,值算一个整体class属性值多个时不能只写一个属性值4.层级与属性相结合
#通过其他元素进行定位
//路径.../标签名[属性名属性值]5.向上查找
#.. 查找上一级
#ancestor 向上查找所有父辈可以结合属性查找
ancestor::标签名
--------------------------------------------------------------
例如
ancestor::div[roledialog]6.通过文本查找
//标签名[text()文本值]
----------------------------------------------------------------
例
//a[text()网站]7.节点信息属性值或文本值模糊查找
//标签名[contains(属性名,属性值)]
//a[contains(id,AA)]8.查找以XX开头的元素
适用于某属性开头固定后面元素变化
//标签名[starts-with(属性名,属性值)] #字符串要双引号查找范围
通过层级关系查找分2种/ 或者 //分隔 路径中间以/分隔代表直接在子元素中查找 路径中间以//分隔代表在所有的后代元素中查找
查找特定元素 查找最后一个元素 标签名[last()]定位的元素文本中包含空格 //标签名[normalize-space(.)去除空白后的文本] #.表示当前节点可能定位不到推荐第二种写法
或
//标签名[normalize-space(text())去除空白后的文本] Xpath总结
部分描述是否必须格式第一部分开头部分必须/或//第二部分标签部分必须*或指定标签第三部分节点信息部分非必须如果有的话用[]括起来可以是属性或者文本多个用and连接第四部分层级部分非必须层级之间用/或//分隔
Xpath轴定位
子节点轴child::选择指定节点的所有直接子节点。
//div/child::p #选择所有div节点的直接子节点中的p节点父节点轴parent::选择指定节点的父节点。
//p/parent::div #选择所有p节点的父节点中的div节点兄弟节点轴following-sibling::、preceding-sibling::选择指定节点之后或之前的所有同级节点。
//div/following-sibling::p #选择div节点之后的所有同级p节点
//p/preceding-sibling::span #选择p节点之前的所有同级span节点祖先节点轴ancestor::选择指定节点的所有祖先节点。
//p/ancestor::div #选择所有p节点的祖先中的div节点后代节点轴descendant::选择指定节点的所有后代节点。
//div/descendant::p #选择所有div节点的后代中的p节点属性节点轴attribute::选择指定节点的属性节点。
//class #选择所有节点的class属性自身节点轴self::
//div/self::div #选择div节点本身。同级节点轴following::、preceding::
//div/following::p #选择div节点之后的同级p节点
//p/preceding::span #选择p节点之前的同级span节点命名空间节点轴namespace::
//namespace::* #选择文档中所有命名空间节点前一个文档节点轴preceding::
//div/preceding::node() #选择div节点之前的所有节点。后一个文档节点轴following::
//div/following::node() #选择div节点之后的所有节点。默认命名空间轴default namespace::
//default namespace::* #选择文档的默认命名空间。