我们工作中经常用到的定位方式有八大种:id  name  class_name  tag_name  link_text  partial_link_text  xpath  css_selector

本篇内容主要说我们功能最强大的xpath定位

1.xpath绝对路径定位:

语法:直接页面所有标签一级一级向下指定,直到找到自己定位的元素;例如:html/body/div/div/span/input

2.根据标签属性进行定位:

语法://标签名[@属性名="属性值"]  标签名可以使用*代替,*表示通配所有。一般我们指定上标签可以更准备的定位

#通过id属性定位
driver.find_element_by_xpath('//input[@id="kw"]') #通过name属性定位
driver.find_element_by_xpath('//input[@name="wd"]') #通过class属性定位
driver.find_element_by_xpath('//input[@class="s_ipt"]')

3.通过逻辑运算符:and or not 连接多个属性进行定位;

# 通过and连接属性
driver.find_element_by_xpath('//input[@id="kw" and autocomplete="off"]') # 通过or连接属性
driver.find_element_by_xpath('//input[@id="kw" or autocomplete="off"]') # 通过not连接属性
driver.find_element_by_xpath('//input[@id="kw" not autocomplete="off"]')

4.在实际操作中肯定会遇到动态属性值,针对于动态值xpath提供了模糊定位,匹配开头属性值和结束属性值

#通过contains()模糊定位
driver.find_element_by_xpath('//input[contains(@id,"k")]') #通过starts-with()匹配开头的属性值
driver.find_element_by_xpath('//input[starts-with(@id,"k")]') #通过ends-with()匹配结束的属性值
driver.find_element_by_xpath('//input[ends-with(@id,"w")]')

5.通过文本值定位:语法://input[text()="文本值"]  注意text不是一个属性所以不需要加@

#通过文本进行定位
driver.find_element_by_xpath('//a[text()="关于百度"]')

python selenium框架的Xpath定位元素的更多相关文章

  1. Python selenium PO By.XPATH定位元素报错

    Python selenium PO  By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...

  2. 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素

    目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...

  3. python+selenium基础之XPATH定位(第一篇)

    世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等 ...

  4. 使用python处理selenium中的xpath定位元素的模糊匹配问题

    # 用contains,寻找页面中style属性值包含有sp.gif这个关键字的所有div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath ...

  5. 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊

    1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...

  6. 《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!

    1. 简介 其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了.接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出 ...

  7. 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

    1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我 ...

  8. Selenium-Python学习——通过XPath定位元素

    用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的 ...

  9. Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素

    在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click  button    id=l ...

随机推荐

  1. 学习笔记:flutter项目搭建(mac版)

    什么是flutter Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...

  2. webStrom快捷键快速创建React组件

    1. rcc + tab键 - - 用ES6模块系统创建一个React组件类 2. rccp + tab键 - - 创建一个带有PropTypes和ES6模块系统的React组件类 3. rcfc + ...

  3. printf 格式输出代码大全

    d,lx,ld,,lu,这几个都是输出32位的hd,hx,hu,这几个都是输出16位数据的,hhd,hhx,hhu,这几个都是输出8位的,lld,ll,llu,llx,这几个都是输出64位的, pri ...

  4. JdbcTemplate增删改

    (1)Accountsdao层 //删除单个账户 int delaccount(Integer accountid); //添加单个用户 int addaccount(Accounts account ...

  5. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  6. 死磕 java线程系列之线程池深入解析——未来任务执行流程

    (手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 注:线程池源码部分如无特殊说明均指ThreadPoolExecutor类. 简介 前面我们一起学习了线程池中普 ...

  7. 爬虫之scrapy简单案例之猫眼

    在爬虫py文件下 class TopSpider(scrapy.Spider): name = 'top' allowed_domains = ['maoyan.com'] start_urls = ...

  8. 在vue中如何使用axios

    1.前言 在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -& ...

  9. javaScript中this到底指向谁

    1.前言 在JavaScript中,this的指向一直是大多数初学者的易错点,总是搞不清楚this到底指向谁,而在求职面试中,this的指向问题往往又是高频考点.本篇博文就来总结一下在JavaScri ...

  10. Unix/Linux 从哪儿来?那些改变世界的人们...

    昨天看文章时发现自己对 linux 操作系统不够了解,还记得 17 年时听过老师的一些课,对 linux 的历史有一点了解,不过当时并没有记录笔记,现在已经忘的差不多了. 这次从网上找资料,又重新看了 ...