参考:http://www.python3.vip/tut/auto/selenium/css_1/

 

1、css selector选择的使用

css选择器实例python python css选择器语法_css

 

蓝色框里面用css 样式,指定了class 值为animal的元素,要显示为红色。

其中 蓝色框里面的 .animal

CSS Selector 语法就是用来选择元素的。

既然 CSS Selector 语法 天生就是浏览器用来选择元素的,selenium自然就可以使用它用在自动化中,去选择要操作的元素了。

只要 CSS Selector 的语法是正确的, Selenium 就可以选择到该元素。

CSS Selector 非常强大,学习Selenium Web自动化一定要学习CSS Selector

find_element_by_css_selector(CSS Selector参数)
find_elements_by_css_selector(CSS Selector参数)
find_elements_by_css_selector('.animal')         --返回的就是class属性为animal的所有元素。

 

2、根据tag、ID、class属性选择的css selector用法

CSS Selector参数 可以是ID、tag、class等属性。

根据 tag名 选择元素的 CSS Selector 语法非常简单,直接写上tag名即可:

elements = wd.find_elements_by_css_selector('div')   等价于  elements = wd.find_elements_by_tag_name('div')

 

根据id属性 选择元素的语法是在id号前面加上一个井号: #id值

比如,我们想在 id 为 searchtext 的输入框中输入文本 你好 ,

from selenium import webdriver
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
element = wd.find_element_by_css_selector('#searchtext')
element.send_keys('你好')

 

根据class属性 选择元素的语法是在 class 值 前面加上一个点: .class值

elements = wd.find_elements_by_css_selector('.animal')  等价于  elements = wd.find_elements_by_class_name('animal')

--------------------------------------------------------------------------------------------------------------------

3、直接子元素和后代元素的限定表示方法

直接连接包含的,称为直接子元素;中间隔了几层的,统称为后代元素

 

如果 元素2 是 元素1 的 直接子元素, CSS Selector 选择子元素的语法:元素1 > 元素2

注意,最终选择的元素是 元素2, 并且要求这个 元素2 是 元素1 的直接子元素

多层的情况: 元素1 > 元素2 > 元素3 > 元素4

就是选择 元素1 里面的子元素 元素2 里面的子元素 元素3 里面的子元素 元素4 , 最终选择的元素是 元素4

 

如果 元素2 是 元素1 的 后代元素:元素1  元素2

中间是一个或者多个空格隔开

最终选择的元素是 元素2 , 并且要求这个 元素2 是 元素1 的后代元素。

 

--------------------------------------------------------------------------------------------------------------------

4、根据其他属性选择元素的表示方法

比如<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>

css 选择器支持通过任何属性来选择元素,语法是用一个方括号 [] 

比如要选择上面的a元素,就可以使用 [href="http://www.miitbeian.gov.cn"] 。

element = wd.find_element_by_css_selector('[href="http://www.miitbeian.gov.cn"]')

 

前面可以加上标签名的限制,比如 div[class='SKnet'] 表示 选择所有 标签名为div,且class属性值为SKnet的元素。

根据属性选择,还可以不指定属性值,比如 [href] , 表示选择 所有 具有 属性名 为href 的元素,不管它们的值是什么。

CSS 还可以选择 属性值 包含

比如, 要选择a节点,里面的href属性包含了 miitbeian 字符串,写 a[href*="miitbeian"]

 

选择 属性值 以某个字符串 开头 的元素

比如, 要选择a节点,里面的href属性以 http 开头 ,写 a[href^="http"]

 

选择 属性值 以某个字符串 结尾 的元素

比如, 要选择a节点,里面的href属性以 gov.cn 结尾 ,写 a[href$="gov.cn"]

 

如果一个元素具有多个属性

<div class="misc" ctype="gun">沙漠之鹰</div>

CSS 选择器 可以指定 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]

 

注意,tag及其属性共同作为限定条件去 定位一个元素,中间不要有空格。像上面代表有父子关系的才有空格。

elements = wd.find_elements_by_css_selector('span[class="date"]')     其中span后面不要有空格。

css选择器实例python python css选择器语法_CSS_02

 

5、验证条件正确性

有时候定位元素写的条件比较复杂,可以直接在浏览器F12的element标签下,按Ctrl + F,把你写的条件粘贴至搜索框,回车执行。

找到的元素会高亮显示。从而达到验证的目的。