Selenium - CSS Selector

昨天我练习了用CSS(即层叠样式表Cascading Stylesheet) Selector来定位(locate)页面上的元素(Elements)。Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath locator速度快,特别是在IE下面(IE没有自己的XPath 解析器(Parser))。有很多跟Selenium相关的Blog文章都有提到使用CSS Selector的技术。之前我不会CSS Selector,甚至一看到CSS就头疼。但我相信用CSS Selector能非常精准的定位到我想测试的Elements。因为前端开发人员就是用CSS Selector设定页面上每一个元素的样式,无论那个元素的位置有多复杂,他们能定位到,那我也能定位到。
读一下这个文档就能明白大部分的CSS Selector了
http://www.w3.org/TR/css3-selectors/
 
如果button上有class属性的,如:
 <button id="ext-eng=1026" class="x-right-button"...>
可以这样写:
css=button.x-right-button
.代表class
 
如果class里带的空格,用.来代替空格如:
<button class="x-btn-text module_picker_icon">...
可以这样写:
css=button.x-btn-text.module_picker_icon
 
 
如果想用别的属性值定位,用方括号【属性名=属性值】的方式,如:
<abbr>Abc<abbr/>
css=abbr[title="Abc"]
 
如果button上有id属性的,如:
<input id="ag_name" type="text"...>
可以这样写:
css=input#ag_name 
或者直接写 
css=#ag_name
#代表id
但是在实际应该中,如果有元素固定id的,可以直接用id locator,这样写:
id=ag_name
这通常是在Form里的input元素, 需要用户填写内容然后提交的部分,也是最简单的部分。
 
没有固定id的,通常是由javascript框架自动生成的id如,每次加载页面都会改变的,如:
<button id="ext-eng-1026" >, 下回可能就是<button id="ext-eng-2047">
这种情况不能使用id属性来定位。
 
如果你想定位一个显示OK的Button,但页面上有几个Button,id是自动生成的,class是一样的,我又想用一个简单点的CSS locator的时候,
<button id="ext-eng-1026" class="x-right-button">OK</button>
<button id="ext-eng-1027" class="x-right-button">Cancel</button>
 
可以这样写: 
css=button.x-right-button:contains("OK")
:contains是个Pseudo-class,用冒号开头,括号里是内容。
Pseudo-classes是CSS提供的伪类,用来访问页面上DOM tree之外的信息,还有Pseudo-elements 用来最精准的定位页面上的某一行文字,甚至某一行文字的第一个字母。我也是昨天头一回听说有这玩意儿,具体可以研究一下css3 selector文档的Chapter 6.6 Pseudo-classes 和 Chapter 7 Pseudo-elements
 
 
基本上用XPath能定位的元素,都能用CSS Selector定位到。
它两最相似的是这样写: 
<table><tr><td><div><span>abcd</span><span>1234</span></div></td></tr></table>
xpath=//table/tr/td/div/span[1]
css=table>tr>td>div>span:nth-child(1)
*xpath没在页面上测试过。
一个非常好的blog,不看可惜了。
http://saucelabs.com/blog/index.php/2009/10/selenium-tip-of-the-week-start-improving-your-locators/
 
综上所述,就是:
有固定id的用id selector, 
没有固定id的用css selector。 
Pseudo-selements :contains()很好用。
会了这几下子,基本上定位就不成问题了。

Selenium 使用css selector (资源来源于网络)的更多相关文章

  1. 转:Selenium之CSS Selector定位详解

    CSS selector定位 CSS(Cascading Style Sheets)是一种语言,它被用来描述 HTML 和 XML 文档的样式.  百度输入框: <input name=&quo ...

  2. Selenium的Css Selector使用方法

    什么是Css Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器后,下载插件,FireFinder 或 ...

  3. Selenium之Css Selector使用方法

    什么是Css Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议使用火狐浏览器,下载插件,FireFinder.Fire ...

  4. selenium之css selector定位

    什么是CSS Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器(49及以下版本)后,下载插件Fire ...

  5. selenium中Xpath和CSS Selector的使用方法

    一.selenium中Xpath的使用方法 1. 什么是xpath? Xpath是XML的路径语言,通俗一点讲就是通过元素的路径来查找这个标签元素 2. 练习Xpath的工具 火狐浏览器,下载插件Fi ...

  6. selenium:css_selector定位详解(css selector和xpath的比较)

    selenium使用css selector和xpath的比较 selenium提供的定位方式(常用) ID NAME CLASS CSS SELECTOR XPATH   推荐的定位方式的优先级 优 ...

  7. Selenium - CSS Selector

    Selenium - CSS Selector http://www.cnblogs.com/bugua/archive/2012/08/16/2641647.html   昨天我练习了用CSS(即层 ...

  8. 关于Selenium.common.exceptions.WebDriverException: Message: Invalid locator strategy: css selector 的问题

    在执行脚本时报Selenium.common.exceptions.WebDriverException: Message: Invalid locator strategy: css selecto ...

  9. 下载频道--IT资源关东煮第二期[申明:来源于网络]

    下载频道–IT资源关东煮第二期[申明:来源于网络] 地址:http://geek.csdn.net/news/detail/129509?ref=myread

随机推荐

  1. 勘误《iOS网络高级编程:iPhone和iPad的企业应用开发》

    VII页 , 倒数第二行, “其他” 应为 “其它” X页, 源代码有错误,说是有19章,实际一共13章 XI页,勘误表的链接也是错误的  .是该书的<Beginning ASP.NET 4.5 ...

  2. 关于android:id="@+id/xx"的理解

    之前学习android的时候,对android:id="@+id/xx"总感觉混淆,不理解,刚看了一篇文章.现在貌似是恍然大悟.故做了一下笔记,希望帮助有共同问题的人... and ...

  3. 结合social relationship的推荐系统(持续更新)

    最近看了一些结合社会关系的推荐系统,把论文罗列一下: (TidalTrust) Generating predictive movie recommendations from trust in so ...

  4. Cocoa 新的依赖管理工具:Carthage

    昨天搞了一下pod的安装 因为之前我都是在使用pod来进行第三方库的管理 但是拿到项目之后 竟发现这个前辈是用Carthage 说真的在这之前我从来没有用过这个玩意因为我感觉用POD已经很好了啊 很方 ...

  5. #DP# ----- OpenJudge数字组合

    OpenJudge 2985:数字组合 总时间限制:1000ms  内存限制: 65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3, ...

  6. 大型网站制作前端使用PHP后台逻辑用 Java

    对于网站团队,大概可以按照职责分为前端.后端.架构三种角色. 前端:负责所有和用户有交互的产品,包括 WEB以及手机客户端 后端:负责各种业务 API 的开发,以及服务器端其他系统的开发 架构:负责设 ...

  7. Word常用实用知识2

      纯手打,可能有错别字,使用的版本是office Word 2013  转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6296863.html,谢谢. 批注和 ...

  8. Grunt + Bower—前端构建利器

    目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的Web Service服务,通过JSON格式进行 ...

  9. HDU5475

    An easy problem Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  10. HDU1716(全排列)

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...