1、XPath是一种在XML文档中定位元素的语言。因为HTML可以看作XML的一种实现, 所以Selenium用户可以使用这种强大的语言在Web应用中定位元素。

1.1 绝对路径定位

参考baidu.html前端工具所展示的代码,我们可以通过下面的方式找到百度输入框和搜索按钮。

find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span/input")

find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input")

1.2 利用元素属性定位

XPath可以使用元素的属性值来定位。同样以百度输入框和搜索按钮为例:

find_element_by_xpath(“//input[@ id = ‘ kw’]”)

find_element_by_xpath(“//input[@ id = ‘ su’]”)

//表示当前页面某个目录下,input表示定位元素的标签名,[@ id=’ kw’]表示这个元素的id属性值等于kw。

下面通过name和class属性值来定位。

find_element_by_xpath(“//input[@ name = ‘ wd’]”)

find-____element__by_xpath(“//input[@ class= ‘ s_ipt’]”)

如果不想指定标签名,则也可以用星号(*)代替。当然,使用XPath不局限于id、name 和class这三个属性值,元素的任意属性值都可以使用,只要它能唯一的标识一个元素。

find_element_by_xpath(“//input[@ maxlength= ‘ 100’]”)

find_elernent_by_xpath(“//input[@ autocomplete = ‘off ’]”)

1.3 层级与属性结合

查看如下前端代码:

<form id="form" class="fm" name="f" action="/s">

<input name="ie" value="utf-8" type="hidden">

<input name="f" value="8" type="hidden">

<input name="rsv_bp" value="0" type="hidden">

<input name="rsv_idx" value="1" type="hidden">

<input name="ch" value="" type="hidden">

<input name="tn" value="baidu" type="hidden">

<input name="bar" value="" type="hidden">

<span class="bg s_ipt_wr quickdelete-wrap">

<span class="soutu-btn"></span>

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

<a id="quickdelete" class="quickdelete" href="javascript:;" title="清空" style="top: 0px; right: 0px; display: none;"></a>

</span>

<span class="bg s_btn_wr">

<input id="su" class="bg s_btn" value="百度一下" type="submit">

</span>

通过XPath可以这样定位如下:

find_element_by_xpath(" //span[@ class = ‘  bg s_ipt_wr quickdelete-wrap’]/input")

span[@ class = ‘ bg s_ipt_wr quickdelete-wrap’]通过class属性定位到父元素,后面/input就表示父元素下面的子元素。如果父元素没有可利用的属性值,那么可以继续向上查找“爷爷”元素。

fmd_element_by_xpath("//form [@id='form']/span/input")

find_element_by_xpath("//form[@id='form']/span[2]/input")

1.4 使用逻辑运算符

如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来査找元素。

<input id=”kw” class=”su” name="ie">

<input id=”kw” class=”aa” name="ie">

<input id=”bb” class=”su” name="ie">

如上面的三行元素,假设我们现在要定位第一行元素,如果使用id将会与第二行元素重名,如果便用class将会与第三行元素重名。如果同时使用id和class就会唯一地标识这' 个元素,这个时候就可以通过逻辑运算符“and”来连接两个条件。

find_element_by_xpath(" //input[@id = ‘kw’ and @class = ‘su’]/span/input”)

当然,我们也可以用“and”连接更多的属性来唯一地标识一个元素。

2、CSS (Cascading Style Sheets)是一种语言,它用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。

CSS可以较为灵活地选择控件的任意属性,一般情况下定位速度要比Xpath快。

下面同样以百度输入框和搜索按钮为例介绍CSS定位的用法。

<span class="bg s_ipt_wr quickdelete-wrap">

<span class="soutu-btn"></span>

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

<a id="quickdelete" class="quickdelete" href="javascript:;" title="清空" style="top: 0px; right: 0px; display: none;"></a>

</span>

<span class="bg s_btn_wr">

<input id="su" class="bg s_btn" value="百度一下" type="submit">

</span>

2.1 通过class属性定位

find_element_by_css_selector(“.s_ipt”)

find_element_by_css_selector(“.bg s_btn”)

find_element_by_css_selector()方法用于CSS语言定位元素,点号( .)表示通过class属性来定位元素。

2.2 通过id属性定位

find_element_by_css_selector( “ # kw ”)

find_element_by_css_selector( “ # su ”)

井号(#)表示通过id属性来定位元素。

2.3 通过标签名定位

find_element_by_css_selector( “ input” )

2.4 通过父子关系定位

find_element_by_css_selector("span>input")

2.5 通过属性定位

find_element_by_css_selector (‘[type="submit"]')

2.6 组合定位

我们当然可以把上面的定位策略组合起来使用,这就大大加强了定位元素的唯一性。

find_element_by_css_selector(“span . bg s_ipt_wr quickdelete-wrap>input .s_ipt “)

find_element_by_css_selector(“span . bg s_btn_wr >input # su “)

有一个父元素,它的标签名叫span:它有一个class属性值叫bg s_ipt_wr quickdelete-wrap:它有一个子元素,标签名叫input,并且这个子元素的class属性值叫s_ipt。

Xpath定位和CSS定位(***重)的更多相关文章

  1. xpath定位和css定位对比

    xpath定位和css定位对比   实际项目中使用较多的是xpath定位和css定位.XPath是XML文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素.xpath比较强大,而css选择器 ...

  2. CSS定位(CSS定位概述、相对定位、绝对定位、浮动)

    CSS 定位属性 CSS 定位属性允许你对元素进行定位. 属性 描述 position 把元素放置到一个静态的.相对的.绝对的.或固定的位置中. top 定义了一个定位元素的上外边距边界与其包含块上边 ...

  3. UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)

    Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...

  4. python selenium之CSS定位

    ccs的优点:css相对xpath语法比xpath简洁,定位速度比xpath快 css的缺点:css不支持用逻辑运算符来定位,而xpath支持.css定位语法形式多样,相对xpath比较难记. css ...

  5. Selenium3自动化测试【20】CSS定位元素

    CSS 指层叠样式表 (CascadingStyleSheets),CSS一种用来表现HTML或XML等文件样式的计算机语言,其能够灵活的为页面提供丰富样式的风格. CSS使用选择器为页面元素绑定属性 ...

  6. css定位

    文档流 所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版 ...

  7. CSS 定位 (Positioning) 实例

    CSS 定位和浮动CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务. 定位的基本思想很简单,它允许你 ...

  8. CSS学习总结3:CSS定位

    CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 一.普通流 除非专门指定,否则所有框都在普通流中定位.普通流中元素框的位置由元素在(X)HTML中的位置决定.块级元素从上到下 ...

  9. web前端css定位position和浮动float

    最近做了几个项目:配资公司,ecmal商城等,客户对前台要求都很高.所以,今天来谈谈css的基础,以及核心,定位问题. div.h1或p元素常常被称为块级元素.这意味着这些元素显示为一块内容,即“块框 ...

随机推荐

  1. Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)

    近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...

  2. Oracle ACS 绑定变量窥视 条件

    1. ACS简介 Oracle Database 11g提供了Adaptive Cursor Sharing (ACS)功能,以克服以往不该共享的游标被共享的可能性.ACS使用两个新指标:sensit ...

  3. Windows异常处理机制简介

    windows系统里,为了保证系统内核的强壮和稳定,为了保证用户程序的强壮和稳定,提供了异常处理机制,来帮助程序员和系统使用人员处理异常.简单来说,当CPU执行代码时,发生异常,会把异常告知操作系统, ...

  4. RookeyFrame 信息 常用信息整理

    博客 https://www.cnblogs.com/rookey/ gitee的地址: https://gitee.com/rookey/Rookey.Frame-v2.0 https://gite ...

  5. 在Ubuntu 或 Debian 系统环境安装MYSQL数据库

    一.第一步下载myslq安装程序 sudo apt-get install mysql-server mysql-client apt-get程序会自动下载安装最新的mysql版本.在安装的最后,它会 ...

  6. 开始编写Makefile

    1.Makefile 的编写规则一 目标列表:关联性列表 命令列表 目标列表:可以是多个以空格隔开多个目标文件 关联列表页称为先决条件:同样是用个或多个空格分开的目标文件 命令列表:用<tab& ...

  7. C语言中【变量】的存储类型共有4种类型

    在C语言中,对变量的存储类型说明有以下四种:   auto          自动变量 (动态存储) register     寄存器变量(动态存储) extern       外部变量(静态存储) ...

  8. cf 1037D BFS

    $des$一个 n 个点 m 条边的无向连通图从 1 号点开始 bfs,可能得到的 bfs 序有很多,取决于出边的访问顺序.现在给出一个 1 到 n 的排列,判断是否可能是一个 bfs 序. $sol ...

  9. linux (core dump)调试

    转自 http://www.cnblogs.com/hazir/p/linxu_core_dump.html Linux Core Dump 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内 ...

  10. vue-d2admin前端axio异步请求详情

    vue-d2admin前端axio异步请求详情 d2admin>src>api>sys.login.js 设计axio api import request from '@/plug ...