selenium定位方法

原创 2016年08月30日 14:52:12

一、webdriver提供的八种定位方法

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector

二、方法使用-java

import org.openqa.selenium.By;
webDriver driver = new firefoxDriver();

以百度首页代码为例:

……
<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">
……
<input id="su" class="bg s_btn" type="submit" value="百度一下">
……
<a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>

id:

findElement(By.id());---driver.findElement(By.id("kw"));

通过元素的id属性来查找元素,具有很强的唯一性。


name:

findElement(By.name());---driver.findElement(By.name("wd"));

通过元素的name属性来查找元素,在当前页面中可以不唯一。


className:

findElement(By.className());---driver.findElement(By.className("s_ipt"));

通过元素的class属性查找元素。


tagName:

findElement(By.tagName());---dirver.findElement(By.tagName("input"));

通过元素的标签名(tagname)来查找元素,但是识别元素的概率很低。


linkText:

findElement(By.linkText());---driver.findElement(By.linkText("新闻"));

link用来定位文本链接。


partialLinkText:

findElement(By.partialLinkText());---driver.findElement(By.partialLinkText("新"));

partial link是对link定位的一种补充,在文本链接比较长的时候,可以使用该方法截取一部分文本进行定位。


xpath:

findElement(By.xpath());---driver.findElement(By.xpath("//input[@id='kw']"));

xpath有多种定位策略,最简单直观的是写出元素的绝对路径。还可以使用元素的属性、元素属性与层级以及逻辑运算符来进行定位。

findElement(By.xpath(".//*[@id='kw'and@name='wd']"));

下面是对xpath轴的简单介绍(下面使用方法中默认使用xpath):

child---选取当前节点的所有子元素

child是xpath默认的轴,可以省略不写。使用方法:/child::A等价于/A。

parent---选取当前节点的所有父节点

parent轴是选取当前节点的父节点。使用方法:/A/parent::*获取所有节点A的父节点。

descendant---选取当前节点的所有后代元素(子、孙、等)

descendant选取当前节点的所有后代元素(包括子节点、子孙节点…),descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等。使用方法:/A/descendant::*获取节点A的所有后代元素;/A/descendant::B获取所有以节点A为祖先的B元素。

ancestor---选取当前节点的所有先辈(父、祖父等)

ancestor轴(axis)包含上下节点的祖先节点, 该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身.使用方法:/A/ancestor::*选取元素A的所有祖先节点

descendant-or-self---选取当前节点的所有后代元素(子、孙等)以及当前节点本身

与descendant类似,只是多了节点本身。

ancestor-or-self---选取当前节点的所有先辈(父、祖父等)以及当前节点本身

与ancestor类似,只是多了节点本身。

preceding-sibling---选取当前节点之前的所有同级节点

选取当前节点之前的所有的同一parent下的节点。使用方法:/A/preceding-sibling::*选取所有A节点的同级哥哥节点。

following-sibling---选取当前节点之后的所有同级节点

选取当前节点之后的所有同级同父的节点。使用方法:/A/followin-sibling::*选取A节点之后的所有同级节点。

preceding---选取文档中当前节点的开始标签之前的所有节点

preceding选取文档中当前节点的开始标签之前的所有节点,包含同一文档中按文档顺序位于上下文节点之前的所有节点,除了祖先节点。与preceding-sibling的区别是preceding-sibling只选取同级节点。使用方法:/A/preceding::*选取A节点的所有之前节点。

following---选取文档中当前节点的结束标签之后的所有节点

 following选取文档中当前节点的结束标签之后的所有节点,包含同一文档中按文档顺序位于上下文节点之前的所有节点,除了祖先节点。 following是向后选取,preceding是向前选取。与following-sibling的区别是following-sibling只选取同级节点。使用方法:/A/following::*选取A节点的所有之后节点。

self---选取当前节点
self选取当前节点,一般与其他轴一起使用,例如ancestor-or-self。使用方法:/A/self::*选取节点A。

attribute---选取当前节点的所有属性

attribute选取当前节点的所有属性,获取的结果是属性而不是节点,其他轴是选取节点。使用方法:/A/attribute::*选取A节点的所有属性。

namespace---选取当前节点的所有命名空间节点

namespace用来选取名称空间节点,每个元素节点都有一个专门名称空间节点表示每个作用域名称空间。该项使用频率很小。


cssSelector:

css选择器的常见语法表如下所示,使用方法:findElement(By.cssSelector());


通过class属性定位,点号(.)表示通过class属性来定位元素:

findElement(By.cssSelector(".s_ipt"));获取class属性为.s_ipt的元素

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

findElemen(By.cssSelector("#kw"));获取id为kw的元素

通过标签名定位,直接使用标签名即可:

findElement(By.cssSelector("input"));获取所有标签名为input的元素

通过父子关系定位:

findElement(By.cssSelector("span>input"));获取父节点为span的所有input子节点

通过属性定位,可使用元素的任意可唯一标识元素的属性,属性值的引号可加可不加,但须与整个字符串的引号进行区分:

findElement(By.cssSelector("input[type='submit']"));获取type属性值为submit的input元素

组合定位,input#kw等同于input[id=kw],input.s_ipt等同于input[class=s_ipt]:

findElement(By.cssSelector("form#form>span>input.s_ipt"));


xpath与css的类似功能简单对比如下表所示:


可根据喜好选择一种进行精进学习。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[Selenium] selenium webdriver 选择器

Xpath   Starts-with: //imp[starts-with(@type, 'text')]    查找图片type属性开始位置包含‘text’关键字的页面元素 Contain...

Xpath中关于部分常用轴表达式使用总结

我们在自动化测试中会经常使用到xpath来进行对象的选择。之前我写过的一篇关于自动化测试对象定位的八种常用方式中,也介绍了一些xpath的基本表达式。但有些比较特殊的情况中,仅靠这些比较基本的xpat...

Python+Selenium xpath 定位遇到相同元素时的解决方法父节点找子节点

1、#先定位到父节点,再从父节点找指定节点 例如:  注意不能直接用 driver.find_element_by_xpath('//*[@id="branch_inquiry"]').find_e...

自动化测试工具selenium常见的元素定位方法

本文主要介绍selenium定位元素常用的几种方法 selenium操作浏览器步骤: 查找元素属性----通过元素属性执行相关操作 元素常见的属性: id,name,class,link_text,x...

[python爬虫] Selenium常见元素定位方法和操作的学习介绍

这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法、鼠标操作、键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~ 一.定位元素方法 二.操作元素方法 ...

selenium元素定位方法

一、如何找到页面元素 Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。下面介绍几种比较常用的方法。 1.1By ID ...

Selenium Webdriver元素定位方法

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下...
  • MTbaby
  • MTbaby
  • 2017年06月14日 14:12
  • 164

selenium webdriver 元素定位方法

webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一...

Selenium + Webdriver 学习(四) 元素定位方法

selenium-webdriver提供了强大的元素定位方法,支持以下三种方法。 单个对象的定位方法 多个对象的定位方法 层级定位                         定位单个元素 在定位...

Selenium Webdriver元素定位的八种常用方法

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:selenium定位方法
举报原因:
原因补充:

(最多只允许输入30个字)