使用CSS选择器进行元素定位

在selenium webdriver中,支持使用CSS选择器来进行元素定位,事实在真的投入工作,大量编辑用例和元素定位的时候,使用css 和 xpath才是经常需要用到的。

之前有专门讲过使用xpath对元素定位的使用,下面要介绍css选择器来进行元素定位。

【参见W3C官网说明】

http://www.w3school.com.cn/cssref/css_selectors.asp

先看看css选择器定位的webdriver函数:

def find_elements_by_css_selector(self, css_selector):        """        Finds elements by css selector.         :Args:         - css_selector: The css selector to use when finding elements.        :Usage:            driver.find_elements_by_css_selector('.foo')        """        return self.find_elements(by=By.CSS_SELECTOR, value=css_selector)

常见语法

CSS选择器用于选择你想要的元素的样式的模式。

"CSS"列表示在CSS版本的属性定义(CSS1,CSS2,或对CSS3)。

选择器

示例

示例说明

CSS

.class

.intro

选择所有class="intro"的元素

1

#id

#firstname

选择所有id="firstname"的元素

1

*

*

选择所有元素

2

element

p

选择所有<p>元素

1

element,element

div,p

选择所有<div>元素和<p>元素

1

element element

div p

选择<div>元素内的所有<p>元素

1

element>element

div>p

选择所有父级是 <div> 元素的 <p> 元素

2

element element

div p

选择所有紧接着<div>元素之后的<p>元素

2

[attribute]

[target]

选择所有带有target属性元素

2

[attribute=value]

[target=-blank]

选择所有使用target="-blank"的元素

2

[attribute~=value]

[title~=flower]

选择标题属性包含单词"flower"的所有元素

2

[attribute|=language]

[lang|=en]

选择一个lang属性的起始值="EN"的所有元素

2

element1~element2

p~ul

选择p元素之后同级的每一个ul元素

3

[attribute^=value]

a[src^="https"]

选择每一个src属性的值以"https"开头的元素

3

[attribute$=value]

a[src$=".pdf"]

选择每一个src属性的值以".pdf"结尾的元素

3

[attribute*=value]

a[src*="44lan"]

选择每一个src属性的值包含子字符串"44lan"的元素

3

:first-of-type

p:first-of-type

选择每个p元素是其父级的第一个p元素

3

:last-of-type

p:last-of-type

选择每个p元素是其父级的最后一个p元素

3

:only-of-type

p:only-of-type

选择每个p元素是其父级的唯一p元素

3

:only-child

p:only-child

选择每个p元素是其父级的唯一子元素

3

:nth-child(n)

p:nth-child(2)

选择每个p元素是其父级的第二个子元素

3

:nth-last-child(n)

p:nth-last-child(2)

选择每个p元素的是其父级的第二个子元素,从最后一个子项计数

3

:nth-of-type(n)

p:nth-of-type(2)

选择每个p元素是其父级的第二个p元素

3

:nth-last-of-type(n)

p:nth-last-of-type(2)

选择每个p元素的是其父级的第二个p元素,从最后一个子项计数

3

:last-child

p:last-child

选择每个p元素是其父级的最后一个子级。

3

:root

:root

选择文档的根元素

3

:empty

p:empty

选择每个没有任何子级的p元素(包括文本节点)

3

:target

#news:target

选择当前活动的#news元素(包含该锚名称的点击的URL)

3

:enabled

input:enabled

选择每一个已启用的输入元素

3

:disabled

input:disabled

选择每一个禁用的输入元素

3

:checked

input:checked

选择每个选中的输入元素

3

:not(selector)

:not(p)

选择每个并非p元素的元素

3

::selection

::selection

匹配元素中被用户选中或处于高亮状态的部分

3

:out-of-range

:out-of-range

匹配值在指定区间之外的input元素

3

:in-range

:in-range

匹配值在指定区间之内的input元素

3

:read-write

:read-write

用于匹配可读及可写的元素

3

:read-only

:read-only

用于匹配设置 "readonly"(只读) 属性的元素

3

:optional

:optional

用于匹配可选的输入元素

3

:required

:required

用于匹配设置了 "required" 属性的元素

3

:valid

:valid

用于匹配输入值为合法的元素

3

:invalid

:invalid

用于匹配输入值为非法的元素

3

作者: Ray 博客地址:http://www.cnblogs.com/tsbc/ 声明:本文已获作者授权转载,著作权归作者所有。

本文分享自微信公众号 - 开源优测(DeepTest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏angularejs学习篇

关于文本框输入长度验证实现

13910
来自专栏前端知识分享

第25天:js-封装函数-淘宝鼠标展示

10930
来自专栏Golang语言社区

Go-defer,panic,recover

defer 语法: defer function_name() 简单来讲,在defer所在函数执行完所有的代码之后,会自动执行defer的这个函数。 示例一(...

30980
来自专栏mySoul

js 和 css动画

使用setTimeout()或者setInterval()使用这两个函数定时调用一段代码。这是其原理。

32460
来自专栏c#开发者

ios开发-Storyboard在多个viewcontroller之间导航的实现

IOS SDK6/Xcode4.5开始在Storyboad中新增很多功能对可视化的开发页面布局,导航更加方便,下面就写一下各种导航的实现。 1、不用像Xcode...

35850
来自专栏编程微刊

Vue.js组件的重要选项

19620
来自专栏Angular&服务

关于HTML5的各种选择器

9610
来自专栏web前端

JavaScript基础学习--04for循环

一、自动生成100个Li思路:      1、html布局,在button中做点击事件      2、获取将要放置li的container容器,定义li,并拼接...

33880
来自专栏Golang语言社区

Go-defer,panic,recover

defer 语法: defer function_name() 简单来讲,在defer所在函数执行完所有的代码之后,会自动执行defer的这个函数。 示例一(...

328110
来自专栏前端小叙

vue父组件向子组件动态传值的两种方法

在一些项目需求中需要父组件向子组件动态传值,比如我这里的需求是,父组件动态通过axios获取返回的图片url数组然后传给子组件,上传图片的子组件拿到该数组后进行...

820100

扫码关注云+社区

领取腾讯云代金券