1.简单查找

By ID: WebElement element=driver.findElement(By.id("userId"));

By Name:WebElement element=driver.findElement(By.name("cheese"));

By TagName:WebElement element=driver.findElement(By.tagName("a"));

By ClassName:WebElement element=driver.findElement(By.className("login"));

By LinkText:WebElement element=driver.findElement(By.linkText("Blog");

这种方式很简单,只需要知道id等等属性值就好。那么问题来了,怎么知道属性值是什么呢?总不至于通过网页源码一个一个查看吧!其实Firefox 有一款很强大的插件,叫 Firebug。它是一款很经典的定位网页元素以及查看网页源码的插件。安装方法是在火狐的附加组件里搜索”Firebug",然后我这边选择的是 “Firebug 2.0.8",安装即可。

2.Xpath

关于Xpath的教程可以参考w3School:http://www.w3school.com.cn/xpath/

为了方便定位以及确认Xpath是否正确,Firefox也有一款插件叫Xpath finder。选择附加组件,然后搜索 Xpath即可看到,我这边的版本是 Xpath finder 1.02,点击安装即可。

Xpath使用路径表达式来选取XML文档中的节点或者节点集。

选取节点

下面列出了最有用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

谓语

谓语用来查找某个特定的节点或者包含某个指定的值得节点。谓语被嵌在[]中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

使用:WebElement element=driver.findElement(By.xpath("//ul[@class='nav logged_out']/li"));

表示首先查找class属性的值为 ”nav logged_out"的ul元素,然后查找到这些ul元素下面的所有li元素。

3.CSS选择器

其实大部分的元素都会有一个ID或者Name,这样通过方法1就可以解决,比较奇葩复杂的也全部可以通过XPath来解决。那么为啥还要用CSS呢?恩,据说是因为CSS是最快的。这个需要点CSS功底。想当初W3C的教程我可是看了好久。

CSS教程:http://www.w3school.com.cn/css/index.asp

使用:List<WebElement> webElements = webdriver.findElements(By.cssSelector("ul.nav li"));

.nav 代表 class="nav"。

#nav 代表 id="nav"。

ul 代表属性为 “ul"。

上面那句话的意思是选择所有class属性值为”nav"的ul下面的li。话说,有点绕啊~~

Selenium webdriver 查找元素的更多相关文章

  1. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...

  2. <自动化测试>之<selenium API 查找元素操作底层方法>

    搜罗了一些查找元素的除标准语句外,另外的语句使用方法,摘自 开源中国 郝云鹏driver = webdriver.Chrome(); 打开测试页面 driver.get( "http://b ...

  3. selenium webdriver 定位元素 第一部分

    static final WebDriver driver = ExplorerBase.IESetting(); // 实例化一个浏览器对象 @Test //@Ignore public void ...

  4. [selenium webdriver Java]元素定位——findElement/findElements

    策略 语法 语法 描述 By id driver.findElement(By.id()) driver.findElements(By.id()) 通过id属性定位元素 By name driver ...

  5. selenium webdriver python 元素操作

    常用操作 click 点击某个元素 driver.find_element_by_id(“su”).click()   clear driver.find_element_by_id(“kw”).cl ...

  6. selenium webdriver——设置元素等待

    如今大多数Web应用程序使用ajax技术,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给定位元素的定位增加了困难, 如果因为在加载某个元素时延迟而造成ElementNotVisibl ...

  7. Selenium Webdriver定位元素的几种方式

    原文:http://www.cnblogs.com/tobecrazy/p/4570494.html 工作中使用到记录一下. 主要有: 上传 alter dialog prompt dialog co ...

  8. selenium - webdriver - 设置元素等待

    隐式等待:implicitly_wait(value), value默认是0 from selenium import webdriverfrom selenium.common.exceptions ...

  9. Java + Selenium + WebDriver八大元素定位方式

    UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...

随机推荐

  1. HDU 4607 Park Visit(树的直径)

    题目大意:给定一棵树,让求出依次访问k个点的最小花费,每条边的权值都为1. 思路:如果能一直往下走不回来,那么这个路径肯定是最小的,这就取决于给定的k,但是怎么确定这个能一直走的长度呢,其实这个就是树 ...

  2. JSP学习--常用作用域

    page:当前页面,也就是只要跳到别的页面就失效了 request:一次会话,简单的理解就是一次请求范围内有效 session:浏览器进程,只要当前页面没有被关闭(没有被程序强制清除),不管怎么跳转都 ...

  3. C#操作word封装

    在项目中添加Microsoft.Office.Interop.Word.dll引用 Codepublic  class  WordAPI{    private object _template;   ...

  4. Linux CentOS6.4下Mysql数据库的安装与配置

    一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...

  5. Qt中绘图坐标QPainter,Viewport与Window的关系

    在Qt中常常要自己重载一些paintEvent函数,这个时候往往忽略了两个很关键的API,那就是setViewport和setWindow. Viewport,顾名思义,反应的是物理坐标,就是你实际想 ...

  6. javescript扩展方法

    <script type="text/javascript"> //扩展方法 '原型'->'prototype' //通过类对像的prototype设置扩展方法 ...

  7. OOCSS学习(二)

    OOCSS —— 面向对象CSS 5.CSS团队精神:CSS最佳团队开发 在本文中,你将学习书写CSS的最佳实践来帮助你避免不一致和冗余;实际上,这样制定标准,简化了团队开发的工作. 1)结构化 (根 ...

  8. linux修改环境变量

    /etc/profile 系统全局环境变量设定,所有用户共享,修改后,需要重启系统才能生效 ~/.bash_profile,~/.bashrc 用户目录下的私有环境变量设定,常用来个性化定制功能,修改 ...

  9. IIS 10 安装URLRewrite组件 方式

    1.Open Regedit > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp 2.Edit "MajorVersion" an ...

  10. 多目标遗传算法 ------ NSGA-II (部分源码解析) 目标函数值计算 eval.c

    这部分比较简单,具体的函数数值计算是需要调用设定的目标函数的,此部分一个不能忽略的问题是  超出限制条件的处理 , 故对此加以解释. 首先是包装函数, 核心操作调用  evaluate_ind  实现 ...