根据id选择名字:
<input type="text" id='searchtext' />
element = wd.find_element(By.CSS_SELECTOR, '#searchtext')
element.send_keys('你好')
根据class选择元素的两种方式:
1.By.CLASS_NAME:
elements = wd.find_elements(By.CLASS_NAME, 'animal')
2.使用选择器:
elements = wd.find_elements(By.CSS_SELECTOR, '.animal')
子代选择器和后代选择器
子代选择器和后代选择器是 CSS 中用于选择元素的不同方式,它们有以下区别:
子代选择器(Child Selector):子代选择器使用 > 符号,用于选择父元素直接子元素。例如,.parent > .child 表示选择类名为 “parent” 的元素的直接子元素中的类名为 “child” 的元素。子代选择器只匹配直接子元素,不会匹配更深层次的后代元素。
后代选择器(Descendant Selector):后代选择器使用空格,用于选择祖先元素下的所有后代元素。例如,.parent .child 表示选择类名为 “parent” 的元素下所有类名为 “child” 的后代元素。后代选择器会匹配任意深度的后代元素,包括直接子元素、孙子元素、曾孙元素等等。
总结来说,子代选择器仅匹配父元素的直接子元素,而后代选择器则匹配父元素下的所有后代元素,无论其层级深度如何。因此,根据具体需求,我们可以选择使用子代选择器或后代选择器来精确地选择所需元素。
属性选择器
id、class 都是web元素的 属性
,因为它们是很常用的属性,所以css选择器专门提供了根据 id、class 选择的语法。
那么其他的属性呢?
1.选择指定的herf属性
<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>
# 根据属性选择元素
element = wd.find_element(By.CSS_SELECTOR, '[href="http://www.miitbeian.gov.cn"]')
这个表达式的意思是,选择 属性href值为 http://www.miitbeian.gov.cn 的元素。
2.选择全部为herf的值:
[href]
3.指定标签的属性,并且指定标签中某个属性的值
div[class='SKnet']
4.属性中包含某一段值:
要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写
a[href*="miitbeian"]
5.还可以 选择 属性值 以某个字符串开头的元素
要选择a节点,里面的href属性以 http 开头 ,就可以这样写
a[href^="http"]
6.选择以什么结尾的元素
要选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写
a[href$="gov.cn"]
7.同时选择多个元素的限制:
<div class="misc" ctype="gun">沙漠之鹰</div>
div[class=misc][ctype=gun]
小结:
1指定的’[href=“http://www.miitbeian.gov.cn”]’
2.全部的’[href]’
3.指定标签指定属性div[class=‘SKnet’]
4.包含关系a[href*=“miitbeian”]
5.开头包含a[href^=“http”]
6.结尾包含a[href$=“gov.cn”]
7.多个限制 div[class=misc][ctype=gun]
组选择
如果我们要 同时选择所有class 为 plant 和 class 为 animal 的元素。
.plant , .animal
我们要选择所有 唐诗里面的作者和诗名, 也就是选择所有 id 为 t1 里面的 span 和 p 元素
错误写法
#t1 > span,p
正确写法:
#t1 > span , #t1 > p
注意:组选择结果列表中,选中元素排序, 不是 组表达式的次序, 而是符合这些表达式的元素,在HTML文档中的出现的次序。
父元素的第n个子节点
我们可以指定选择的元素 是父元素的第几个 某类型的 子节点
使用 nth-of-type
比如,
我们要选择 唐诗 和宋词 的第一个 作者,
可以像上面那样思考:选择的是 第2个子元素,并且是span类型
所以这样可以这样写 span:nth-child(2)
,
还可以这样思考,选择的是 第1个span类型 的子元素
所以也可以这样写 span:nth-of-type(1)
父元素的倒数第几个某类型的子节点
当然也可以反过来, 选择父元素的 倒数第几个某类型 的子节点
使用 nth-last-of-type
像这样
p:nth-last-of-type(2)
选择奇数和偶数节点:
如果要选择的是父元素的 偶数节点,使用 nth-child(even)
比如
p:nth-child(even)
如果要选择的是父元素的 奇数节点,使用 nth-child(odd)
p:nth-child(odd)
如果要选择的是父元素的 某类型偶数节点,使用 nth-of-type(even)
如果要选择的是父元素的 某类型奇数节点,使用 nth-of-type(odd)
相邻兄弟节点选择
上面的例子里面,我们要选择 唐诗 和宋词 的第一个 作者
还有一种思考方法,就是选择 h3 后面紧跟着的兄弟节点 span。
这就是一种 相邻兄弟 关系,可以这样写 h3 + span
表示元素 紧跟关系的 是 加号
后续所有兄弟节点选择
如果要选择是 选择 h3 后面所有的兄弟节点 span,可以这样写 h3 ~ span