python学习之selenium的xpath轴的用法,附案例

xpath 轴

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

轴是相对于当前节点的节点集

ancestor:选取当前节点的所有先辈(包括父,祖父,祖祖父等)

ancestor-or-self:选取当前节点的所有先辈以及当前节点本身

attribute:选取当前节点的所有属性

child:选取当前节点的所有子元素

descendant:选取当前节点的所有后代元素(包括子,孙等)

descendant-or-self:选取当前节点的所有后代元素及当前节点本身

following:选择文本中当前节点结束标签后的所有节点

namespace:选取当前节点的所有命名空间节点

parent:选取当前节点的父节点

preceding:选取文档中当前节点的开始标签之前的所有节点

preceding-sibling:选取当前节点之前的所有同级节点

self:选取当前节点

用法:

轴名称::节点测试[谓语]

child::div:所有属于当前节点的子元素的div节点

attribute::id:选取当前节点的id属性

child::*:选取当前节点的所有子元素

attribute::*:选取当前节点的所有属性

child::text():选取当前节点的所有文本子节点

child::node():选取当前节点的所有子节点

descendant::div:选取当前节点的所有div的后代元素

ancestor::div:选取当前节点的所有div 的先辈元素

ancestor-or-self::div:选取当前节点的所有div的先辈元素以及当前节点(如果此节点为div节点的话)

child::*/child::div:选取当前节点的所有div孙节点

xpath 轴

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

轴是相对于当前节点的节点集

ancestor:选取当前节点的所有先辈(包括父,祖父,祖祖父等)

ancestor-or-self:选取当前节点的所有先辈以及当前节点本身

attribute:选取当前节点的所有属性

child:选取当前节点的所有子元素

descendant:选取当前节点的所有后代元素(包括子,孙等)

descendant-or-self:选取当前节点的所有后代元素及当前节点本身

following:选择文本中当前节点结束标签后的所有节点

namespace:选取当前节点的所有命名空间节点

parent:选取当前节点的父节点

preceding:选取文档中当前节点的开始标签之前的所有节点

preceding-sibling:选取当前节点之前的所有同级节点

self:选取当前节点

用法:

轴名称::节点测试[谓语]

child::div:所有属于当前节点的子元素的div节点

attribute::id:选取当前节点的id属性

child::*:选取当前节点的所有子元素

attribute::*:选取当前节点的所有属性

child::text():选取当前节点的所有文本子节点

child::node():选取当前节点的所有子节点

descendant::div:选取当前节点的所有div的后代元素

ancestor::div:选取当前节点的所有div 的先辈元素

ancestor-or-self::div:选取当前节点的所有div的先辈元素以及当前节点(如果此节点为div节点的话)

child::*/child::div:选取当前节点的所有div孙节点

# -*- coding: UTF-8 -*-

#@Time :2019/09/07 15:23

#@Author :wuailexiang

#@Email :3142223672@qq.com

#@File :test.py

from selenium import webdriver

import time

browser = webdriver.Chrome()

browser.maximize_window()

browser.get('地址')

browser.find_element_by_xpath('//div[@class="login-main"]/p[1]/input').send_keys('admin')

browser.find_element_by_xpath('//div[@class="login-main"]/p[2]/input').send_keys('wafer123')

browser.find_element_by_xpath('//div[@class="login-main"]/p[3]/button').click()

time.sleep(1)

'''

xpath 轴

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

轴是相对于当前节点的节点集

ancestor:选取当前节点的所有先辈(包括父,祖父,祖祖父等)

ancestor-or-self:选取当前节点的所有先辈以及当前节点本身

attribute:选取当前节点的所有属性

child:选取当前节点的所有子元素

descendant:选取当前节点的所有后代元素(包括子,孙等)

descendant-or-self:选取当前节点的所有后代元素及当前节点本身

following:选择文本中当前节点结束标签后的所有节点

namespace:选取当前节点的所有命名空间节点

parent:选取当前节点的父节点

preceding:选取文档中当前节点的开始标签之前的所有节点

preceding-sibling:选取当前节点之前的所有同级节点

self:选取当前节点

用法:

轴名称::节点测试[谓语]

child::div:所有属于当前节点的子元素的div节点

attribute::id:选取当前节点的id属性

child::*:选取当前节点的所有子元素

attribute::*:选取当前节点的所有属性

child::text():选取当前节点的所有文本子节点

child::node():选取当前节点的所有子节点

descendant::div:选取当前节点的所有div的后代元素

ancestor::div:选取当前节点的所有div 的先辈元素

ancestor-or-self::div:选取当前节点的所有div的先辈元素以及当前节点(如果此节点为div节点的话)

child::*/child::div:选取当前节点的所有div孙节点

'''

#使用ancestor-or-self选取当前节点的所有先辈及当前节点本身

browser.find_element_by_xpath('//span[@class="ant-cascader-picker"]/ancestor-or-self::span/input').click()

#使用ancestor,选取当前节点的所有父节点

browser.find_element_by_xpath('//ul[@class="ant-cascader-menu"]/ancestor-or-self::div/ul[1]/li[1]').click()

#使用attritube选取当前节点的所有属性

browser.find_element_by_xpath('//span[@class="ant-cascader-picker"]/input/attribute::type/ancestor::span/input').click()

#使用child选取当前节点的所有的子元素,

browser.find_element_by_xpath('//ul[@class="ant-cascader-menu"][2]/child::li[1]').click()

#使用descendant获取当前节点的所有后代元素

browser.find_element_by_xpath('//span[@class="ant-cascader-picker"]/descendant::input').click()

#使用descendant-or-self获取当前节点的所有后代元素及当前节点

browser.find_element_by_xpath('//ul[@class="ant-cascader-menu"][3]/descendant-or-self::ul/li[1]').click()

#following:选择文本中当前节点结束标签后的所有节点

browser.find_element_by_xpath('//span[@class="dept-chose-label"]/following::span[@class="ant-select-selection__rendered"]').click()

time.sleep(1)

#使用parent:选取当前节点的父节点

browser.find_element_by_xpath('//li/parent::ul[@class="ant-select-tree"]/li[2]/span[2]').click()

# self:选取当前节点

browser.find_element_by_xpath('//span[@class="ant-select-selection__rendered"]/self::span').click()

time.sleep(1)

# preceding-sibling:选取当前节点之前的所有同级节点

browser.find_element_by_xpath('//span[@class="ant-select-search__field__mirror"]/preceding-sibling::input').send_keys("西安")

browser.find_element_by_xpath('//span[@class="ant-select-selection__rendered"]/self::span').click()

#使用preceding选取文档中当前节点的开始标签之前的所有节点

browser.find_element_by_xpath('//preceding::i[@class="anticon anticon-plus-circle-o"]').click()

打开APP阅读更多精彩内容