一、通过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. 如何解决Requests的SSLError(转)

    add by zhj: 我使用方法2“更新系统的certificate”解决了问题 原文:https://www.jianshu.com/p/8deb13738d2c 这两天在Linux上爬Googl ...

  2. 『正睿OI 2019SC Day1』

    概率与期望 总结 老师上午几乎是在讲数学课,没有讲什么和\(OI\)有关的题目,所以我就做了一点笔记. 到了下午,老师讲完了有关知识点和经典模型,就开始讲例题了.前两道例题是以前就做过的,所以没有什么 ...

  3. 『Andrew and Chemistry 树同构』

    Andrew and Chemistry Description During the chemistry lesson Andrew learned that the saturated hydro ...

  4. What Is HLS (HTTP Live Streaming)?

    HTTP Live Streaming  (HLS) Executive Summary HTTP Live Streaming (or HLS) is an adaptive streaming c ...

  5. C的温习-开头篇1

    编译运行C语言可以用很多软件MicrosoftVisualC++.MicrosoftVisualStudio.DEVC++.Code::Blocks.BorlandC++.WaTComC++.Borl ...

  6. Vertx的命令行

    IntelliJ----创建一个运行配置(Application), 用io.vertx.core.Launcher类作为主类,在程序参数输入:run your-verticle-fully-qual ...

  7. Vue3.0报错error: Unexpected console statement (no-console) 解决办法

    写项目过程中用ESLint遵守代码规范很有必要,但是对于一些规范也很是无语,比如:‘Unexpected console statement (no-console)’,连console都不能用,这就 ...

  8. android的子线程切换到主线程

    在子线程中,如果想更新UI,必须切换到主线程,方法如下: if (Looper.myLooper() != Looper.getMainLooper()) { // If we finish mark ...

  9. HTML 结构标签(div+span)

    一.div 标签 div 就是 division 的缩写 分割, 分区的意思 常见的用途是文档布局. 二.span 标签 span, 跨度,跨距:范围 <span> 元素可用于为部分文本设 ...

  10. GoLang 中用 MongoDB Watch 监听指定字段的变化

    需要 MongoDB 3.6 及以上, 需要 ReplicaSet 模式. 监听一个字段的变化: func watch(coll *mongo.Collection) { match := bson. ...