#!/usr/bin/env python

importtimefrom selenium importwebdriver

driver=webdriver.Chrome()

driver.get("http://localhost:63342/webtest/demo.html")#节点

driver.find_element_by_xpath("/html/body/div") #绝对路径,从根节点开始,一旦页面改变必须重新定位,不推荐

driver.find_elements_by_xpath("//div//a") #相对路径,从当前节点开始而不考虑它们的位置:选取div下面的a元素

driver.find_element_by_xpath("//input/..") #选择 input 元素的父节点

driver.find_element_by_xpath("//*") #选择所有节点

#谓语:谓语是用来查找某个特定的节点或者包含某个指定的值的节点,谓语被嵌在方括号[]中。#索引

driver.find_element_by_xpath("//a[1]") #索引,选择第一个 a 元素#属性选择器 @

driver.find_element_by_xpath("//span[@class='name']/input") #选择 class=name 的span元素下的input元素

driver.find_element_by_xpath("//input[@type]") #选取所有含有 type 属性的 input 元素

driver.find_element_by_xpath("//input[@*]") #选取所有带有属性的 input 元素#运算符、函数

driver.find_element_by_xpath("//*[@name='pwd' and @class='s-wd']") #逻辑运算 and、or、not

driver.find_element_by_xpath("//book/title | //book/price") #book下的title 和book 下的price

driver.find_element_by_xpath("//div/input[last()]") #属于div的最后一个 input

driver.find_element_by_xpath("//div/input[last()-1]") #属于div的倒数第二个input

driver.find_element_by_xpath("//div/input[position()<2]") #选择属于div的最前面的input元素

driver.find_element_by_xpath("//book[price>30]") #price>30的book元素

#模糊匹配

ele = driver.find_element_by_xpath("//*[contains(@class, 'wd')]")print(ele.get_attribute("id"))

driver.find_element_by_xpath("//*[starts-with(@id, 'p')]")#文本定位

driver.find_element_by_xpath("//a[text()='百度']")"//a/text()" #获取a标签的所有文本

#轴#子元素 child

driver.find_element_by_xpath("//div[contains(@class,'account')]//child::*") #class包含account的div下的所有子元素(不知道为什么也查出了后代元素???)

driver.find_element_by_xpath("//div[contains(@class,'account')]//child::input[@id='kw']")#先辈 ancestor

driver.find_element_by_xpath("//input[@id='test']//ancestor::div")#先辈和自己 ancestor-or-self

driver.find_element_by_xpath("//input[@id='test']//ancestor-or-self::*")#parent:父辈

driver.find_element_by_xpath("//input[@id='test']//parent::*")#descendant 后代子孙

driver.find_element_by_xpath("//div[contains(@class,'account')]//descendant::*")#descendant-or-self 后代及自己

driver.find_element_by_xpath("//div[contains(@class,'account')]//descendant-or-self::*")#当前节点之后的所有节点 following

driver.find_element_by_xpath("//input[@id='pwd']/following::*")#当前节点之前的所有节点 preceding

driver.find_element_by_xpath("//input[@id='pwd']/preceding::*")#attribute 选取当前节点的所有属性。

"//input[@id='pwd']/attribute::*"

#哥哥姐姐(当前节点之前的同级节点)preceding-sibling

driver.find_element_by_xpath("//input[@id='pwd']/preceding-sibling::*")

time.sleep(1)

driver.quit()

python css和xpath_Selenium系列教程(四)css、xpath定位(基于 Python)相关推荐

  1. Python时间序列LSTM预测系列教程(6)-单变量

    单变量LSTM预测模型(6) 教程原文连接 前置教程: Python时间序列LSTM预测系列教程(1)-单变量 Python时间序列LSTM预测系列教程(2)-单变量 Python时间序列LSTM预测 ...

  2. 史上最详细的Android Studio系列教程四--Gradle基础

    史上最详细的Android Studio系列教程四--Gradle基础 转载于:https://www.cnblogs.com/zhujiabin/p/5125917.html

  3. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  4. Python数据系列(四)- 数组array-NumPy:Python的“运算加速氮气”

    本系列要对Python在数据处理中经常用的列表(list).元组(tuple).字典(dictionary).array(数组)-numpy.DataFrame-pandas .集合(set)等数据形 ...

  5. 讲给后台程序员看的前端系列教程(19)——CSS的层叠性与继承性以及优先级

    C语言自学完备手册(33篇) Android多分辨率适配框架 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View系列教程(10篇) 走出思维困境 ...

  6. css3 3d perspective,CSS 3D transforms系列教程-Perspective

    CSS 3D transforms的出现已经有好几年的历史了,但是由于缺乏浏览器的广泛支持,它一直没有得到广泛的应用.这个系列教程旨在让更多的童鞋了解和使用CSS 3D transforms. 要将一 ...

  7. python twised系列教程四–twisted Poetry client

    我们第一个twisted client 尽管twisted 经常被用来写server端的,但client往往会比较简单些,我们就以最简单的client 开始.源代码在twisted-client-1/ ...

  8. asp.NET自定义服务器控件内部细节系列教程四

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  9. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...

最新文章

  1. PCB常见的拓扑结构 (转)
  2. 关于企业的信息化建设
  3. ORB-SLAM2源代码中ROS部分ros-mono源代码中subscribe /camera/image_raw topic谁发布publish的
  4. linux创建目录的语句,Linux的 文件 和 目录 管理(基本语句)
  5. 【博客园2018总结帖】21天,在Github上获取 6300 star
  6. QtCreate不能使用代码提示功能
  7. mysql订单表上亿怎么分表_[转]单表上亿的数据量如何分表
  8. java为什么要分为service层,dao层,controller层
  9. 算法不会,尚能饭否之树(2)
  10. 软件开发和DBA谁更吃香?有答案了
  11. 大学计算机应用基础模拟试题,《大学计算机应用基础》模拟试题.doc
  12. 【Python-2.7】列表与元组
  13. powerpoint(ppt) 的制作
  14. 【数控雕刻】【刀具路径】北京精雕JDPaint5.19+诺诚NC转换器4.0+SDU NCEdit1.0(什么是ENG和NC文件)
  15. 如何便捷的获取AD(Altium Designer)封装、以及如何从PCB工程中导出封装库、封装库安装
  16. JS获取Audio音频的实时时间
  17. 笔记本同时接入无线(外网)和有线(内网)
  18. 关于 JSON,什么是JSON
  19. matlab实现图像DCT变换
  20. 新南威尔士大学纯硅量子计算机,全球首款纯硅量子计算机芯片在新南威尔士大学诞生...

热门文章

  1. 湖北经济学院的计算机怎么样,湖北经济学院怎么样名气高吗?真实排名及实力如何?是一本吗...
  2. python的语句_Python的语句
  3. C#session共享+redis_技术干货分享:基于SpringBoot+Redis的Session共享与单点登录
  4. 浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器
  5. 猎豹浏览器缓存文件在哪 猎豹浏览器缓存文件位置说明
  6. IE浏览器高级设置如何还原
  7. 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法
  8. Unity环境下RTMP推流+RTMP播放低延迟解决方案
  9. Dubbo:RPC原理
  10. epp是什么意思_什么是1K/2K/3K注塑?