一、通过id查找

例:<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

element = driver.find_element_by_id("kw") 

二、通过name查找

例:<input name="cheese" type="text"/>

cheese = driver.find_element_by_name("cheese")

三、通过classname查找

例:<div class="cheese"><span>Cheddar</span></div>

cheeses = driver.find_elements_by_class_name("cheese")

四、通过标签名查找

例:<iframe src="..."></iframe>

frame = driver.find_element_by_tag_name("iframe")

五、通过链接文本查找

例:<a href="http://www.baidu.com">转到百度</a>

ele = driver.find_element_by_link_text("转到百度")

注:有的时候,链接的文本很长,我们甚至只需要通过部分文本去找到该链接元素

只要这个链接文本是唯一的就行

六、通过CSS选择器查找

eles = driver.find_element_by_css_selector('#choose_car option')

 基本用法:

方式

用法

举例

描述

根据class查找

.class

.intro

查找class=”intro”元素

根据id查找

#id

#firstname

查找id=”firstname”的元素

根据标签名查找

tagname

div

查找<div>元素

根据属性查找

[attribute]

[target]

查找具有”target”属性的元素

[attribute=value]

[target=_blank]

查找包含target=”_blank”的元素

[attribute^=value]

[href^=”https”]

查找包含href属性,且该属性的值以”https”开头的元素

[attribute$=value]

[href$=”.pdf”]

查找包含href属性,且该属性的值以”.pdf”结尾的元素

[attribute*=value]

[href*=”abc”]

查找包含href属性,且该属性的值包含“abc”的元素

高级用法:

用法

举例

描述

后代元素选择器

div p

选择所有在<div>里面的<p>

子元素选择器

div>p

选择所有<div>的<p>子元素

组选择器,同时选择多个元素

<div>,<p>

同时选择所有的<div>元素和<p>元素

相邻兄弟元素

<div>+<p>

选择所有<div>后面紧跟的<p>元素

兄弟元素

<div>~<p>

选择所有<div>元素后面的<P>元素(不一定要紧跟)

:empty

p:empty

选择没有子节点(包括文本)的<p>元素

:first-child

p:first-child

选择所有是 父元素第一个元素的<p>元素

:first-of-type

p:first-of-type

选择所有是 父元素第一个<p>元素的<p>元素

:last-child

p:last-child

选择所有是其父元素最后一个元素的<p>元素

:last-of-type

p:last-of-type

选择所有是其父元素最后一个<p>元素的<p>元素

:nth-child(n)

p:nth-child(2)

选择所有是其父元素第二个元素的<p>元素

:nth-of-type(n)

p:nth-of-type(2)

选择所有是其父元素的第二个<p>元素的<p>元素

:nth-last-child(n)

p:nth-last-child(2)

选择所有是其父元素倒数第二个元素的<p>元素

:nth-last-of-type(n)

p:nth-last-of-type

选择所有是其父元素倒数第二个<p>元素的<p>元素

:only-child

p:only-child

选择所有是其父元素唯一一个子元素的<p>元素

:only-of-type

p:only-of-type

选择所有是其父元素唯一一个<P>子元素的<p>元素

:not(selector)

:not(p)

选择所有不是<p>元素的元素

七、通过Xpath查找

eles = food.find_elements_by_xpath('./p')

基本用法:

用法

举例

描述

绝对路径(/)

/html/body/div/p

表示html文档中的p节点,xpath路径表示了元素的位置

相对路径(//)

//footer//p

表示footer元素中所有的后代P类型元素

混合使用

//footer/div/p

表示html文档中footer元素下的div元素下的p元素

根据属性选择

//*[@style]

表示选择HTML文档下所有包含style属性的元素

//p[@spec='len2']

选择所有具有spec 属性且值为“len2” 的p元素

//a[contains(@href,'51job.com')]

选择所有具有href属性,且该属性的值包含“51job.com”的a元素

//a[starts-with(@href,'http://big5.51job')]

表示属性href以“http://big5.51job”开头

 高级用法:

方式

用法

举例

描述

子元素选择器

根据下标获取(下标从1开始)

//div[@id='food']/p[1]

获取第一个p子元素

倒数索引

//div[@id='food']/*[last()](倒数第一个)

//div[@id='food']/*[last()-1](倒数第二个)

//div[@id='food']/*[last()-2](倒数第三个)

last()代表倒数第一个元素

postion():代表元素的位置

//div[@id='food']/*[position()=2]

表示第二个元素

//div[@id='food']/[position()=last()]

表示最后一个元素

//div[@id='food']/[position()=last()-2]

表示倒数第三个元素

//div[@id='food']/[position()>=last()-2]

表示最后三个元素

组选择器

用竖线隔开

//p | //button

等价于css中的p, button

相邻兄弟选择器

following-sibling::

//*[@id=’food’]/following-sibling::div

选择id=food节点的相邻兄弟div元素

preceding-sibling::

//*[@id=’food’]/preceding-sibling::div

选择id=food节点的前面的兄弟P元素

元素的相对定位:

如:

food = driver.find_element_by_id("food")

eles = food.find_elements_by_xpath('./p')

如果不加点  ,eles = food.find_elements_by_xpath('/p')   与    eles = driver.find_elements_by_xpath('/p')  -----这两个方式效果是一样的

Selenium元素定位的几种方式的更多相关文章

  1. 史上最全!Selenium元素定位的30种方式

    Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下. 这里将统一使用百度 ...

  2. selenium(1)-详细解读元素定位的八种方式

    安装selenium和下载webdriver 安装selenium pip install selenium pip install selenium  -U  (判断是否有最新版本) 下载drive ...

  3. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  4. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

  5. selenium元素定位陷阱规避

    为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...

  6. UI自动化学习笔记- Selenium元素定位及元素操作

    一.元素定位 1. 如何进行元素定位? 元素定位就是通过元素的信息或元素层级结构来定位元素的 2.定位工具 浏览器开发者工具 3.元素定位方式 Selenium提供了八种定位元素方式 id name ...

  7. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  8. android 定位的四种方式

    [原文]  开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面总结了一下网络中现有对于介绍android定位的4种方式,希望对大家有帮助: android 定 ...

  9. 网站开发进阶(十七)Html元素隐藏的几种方式

    Html元素隐藏的几种方式 隐藏Html元素的方法最常用的方法有css的display:none,一种方法两种实现方式,感兴趣的朋友可以了解下. 1.使用css style="display ...

随机推荐

  1. golang ---Learn Concurrency

    https://github.com/golang/go/wiki/LearnConcurrency 实例1: package main import ( "fmt" " ...

  2. Phoenix连接安全模式下的HBase集群

    Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerber ...

  3. C#读写设置修改调整UVC摄像头画面-倾斜

    有时,我们需要在C#代码中对摄像头的倾斜进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  4. java8使用stream的collect进行list转map注意事项

    1.创建Person类 package com.xkzhangsan.normal.collectors; public class Person { private Integer id; priv ...

  5. MySQL之命令行简单操作MySQL(二)

    一:命令行连接数据库 打开终端,运行命令mysql -uroot -p (p后面加密码,可以直接加,也可以回车在下一行输入,为了不暴露密码,回车在下行输入 退出:exit或quit 查看版本信息: s ...

  6. js多个参数(追加参数)

    /** * 多个参数 * @param fn * @param args * @param scope */ function multipleArguments(fn,args,scope){ if ...

  7. VsCode中编写python环境配置

    1. VsCode中编写python环境配置 1.1. 前言 有过开发经验都知道idea一系列的软件虽然功能比较多,但比较容易卡,电脑不好还真容易上火,这里我想要入门python,还是选了款vscod ...

  8. free - 显示系统内存信息

    free - Display amount of free and used memory in the system 显示系统中空闲和已使用内存的数量 格式: free [options] opti ...

  9. (05节)快速搭建SSM项目

    1.1  快速搭建Web项目 注意点:name:archetypeCatalog,value:internal 原因:Intellij IDEA根据maven archetype的本质,执行mvn a ...

  10. 初步学习JAVA面向对象初步认识及面向对象内存分析图举例说明

    1. 说到面向对象, 一个绕不开的话题,就是面向过程. 面向过程适合简单.不需要协作的事务. 面向过程 = 分解问题 + 逻辑为先 = 先细节,再整体. 对比面向过程, 面向对象是模块化的, 当我们思 ...