一.八大定位元素的方法

1.根据元素id属性定位元素(重点)

element = driver.find_elemet_by_id('')
2.根据class属性定位元素 (通常不用,因为找到的元素可能不唯一,记住就可以了)

element = driver.find_element_by_class_name('')
3.根据标签名定位元素 (通常不用,因为找到的元素可能不唯一,记住就可以了)

element = driver.find_element_by_tag_name('input')
4.通过链接标签的(a)的文本去查找(不常用)

element = driver.find_element_by_link_text('新闻')

5.通过链接标签的(a)的文本去查找(部分匹配)(不常用)

element = driver.find_element_by_partial_link_text('新')
6.通过元素的name属性定位元素(不常用)

element = driver.find_element_by_name('')
7.通过xpath定位表达式查找元素(重点-定位元素特别精准)-chrpath插件(协助)

浏览器支持在F12,查看源代码处直接copy表达式xpath语句,有绝对路径和相对路径(ctrl+f 验证)

ele = driver.find_element_by_xpath('')
8.通过css定位表达式查找元素

ele = driver.find_element_by_css_selector('')
二、xpath语法

扩展:XPath 教程

xpath定位的优点:更灵活,支持通过文本去匹配 缺点:不够简洁

绝对路径:从根节点开始,一级一级的往下找(不常用,前端页面元素可能随时会有调整)

相对路径://

【1】语法:

/ 代表根节点 ,查找元素只能一级一级往下找

// 代表查找子孙元素,不考虑元素层级关系

. 代表当前已经选中的节点

.. 代表当前已经选中元素的父节点

*通配符(表示匹配所有的元素)

【2】谓语(条件):通过中括号[]来表示

1.下标取值:[index]

xpath的索引是从1开始的
注意点:xpath的下标使用的时候有坑,使用的时候,前面的部分使用括号括起来(索引的优先级高于//)
例子:(//input)[1]
2.通过属性筛选:[@属性名=属性值] @代表找限制条件下,属性名等于属性值的元素

例子://input[@id='kw']
3.通过元素的文本进行定位: [text()='文本值']

例子://a[text()='新闻']
4.部分匹配

starts-with: 匹配是否以xx开头
匹配文本://a[starts-with(text(),'hao123')] 匹配a标签,以hao123开头的元素
匹配属性://a[starts-with(@href,'http://news')] 匹配a标签href属性,以http://news开头的元素
contains:包含匹配
匹配文本://a[contains(text(),'o123')]
匹配属性://a[contains(@href,'http://news')]
【3】逻辑运算符:

and:通过多个条件进行筛选 [条件1 and 条件2]
例子://input[@type='hidden' and @name='rsv_spt']
or : 符合多个条件中的一个即可(不常用)
【4】轴 定位:/轴名称(元素关系)::节点名称 (了解即可)

ancestor 选取当前节点的所有先辈节点(父、祖父等)
三、CSS选择器语法

css定位的优点:比xpath写起来更简洁(不加索引的情况下,加索引比较复杂),在大多数的浏览器上面css定位更快 缺点:不支持通过文本定位
css或者xpath掌握任何一种都可以满足日常工作中的定位需求(可以先掌握一种)

1.层级查找

查找所有的a标签: a
查找所有的a标签或者p标签:a,p
查找id="kw"的所有元素: #kw
选择所有元素:*
选择<div>元素内部的所有<p>元素:div p
选择父元素为<div>元素的所有<p>元素:div>p
选择紧接在<div>元素之后的所有<p>元素
2.谓语(条件)

a[title = 苏宁易购] title属性等于苏宁易购的a标签
a[title *= 苏易] title属性包含苏易的a标签
a[title ^= 苏宁] title属性以苏宁开头的a标签
a[title $= 易购] title属性以易购开结尾的a标签
四、元素的基本操作方法

1.输入 element.send_keys()

2.点击 element.click()

五、对于出来一下马上就会消失的弹窗如何定位

f12 查看源代码 - Source -弹框出现后立马点击,最右边框左上角的暂停按钮,此时再去定位元素即可

如果toast文本找不到的话,使用显示等待,等待元素可见