定位方式分类-汇总:
| 1). id、name、class_name:为元素属性定位 |
| 2). tag_name:为元素标签名称 |
| 3). link_text、partial_link_text:为超链接定位(只针对a标签) |
| 4). Xpath:为元素路径定位 |
| 5). Css:为CSS选择器定位 |
1.1 id定位(元素的id属性,一般唯一)
实现方法:
find_element(By.ID,'xxx')
实现
| from selenium import webdriver |
| from time import sleep |
| driver=webdriver.Firefox() |
| url='E:\\测试\\课件\\Web自动化\\Web自动化课件\\02img\\注册A.html' |
| driver.get(url) |
| user=driver.find_element_by_id("userA") |
| user.send_keys("admin") |
| pwd=driver.find_element_by_id("passwordA") |
| pwd.send_keys("123456") |
| sleep(3) |
| driver.quit() |
1.2 name属性定位(元素的name属性)
find_element_by_name
1.3 class_name 定位(元素的class属性,一个元素可能有多个class,选择其中一个就可以)
find_element(By.CLASS_NAME,'xxx')
1.4 tag_name 定位 (元素的名字,如a,input,img等)
find_element(By.TAG_NAME,'xxx') 如果有多个符合条件的,返回第一个标签
1.5 link_text定位(a标签的全部文本值,精准匹配,只针对a标签)
find_element(By.LINK_TEXT,'xxx')
1.6 partial_link_text(a标签的部分文本值,模糊匹配,只针对a标签)
find_element_by_partial_link_text()
2. 获取元素列表
find_elements('八大元素定位方式','xxx') 返回的符合条件的元素列表
3. xpath定位
| 1. 路径-定位 |
| 1). 绝对路径 |
| 2). 相对路径 |
| 2. 利用元素属性-定位 |
| 3. 层级与属性结合-定位 |
| 4. 属性与逻辑结合-定位 |
| |
什么是xpath
| 1. XPath即为XML Path 的简称,它是一种用来确定XML/HTML文档中某部分位置的语言。 |
| 2. HTML可以看做是XML的一种实现,所以Selenium用户可以使用这种强大的语言在Web应用中定位元素。 |
| |
| xml: 一种标记语言,用于数据的存储和传递.后缀.xml结尾 |
| |
| 提示:Xpath为强大的语言,那是因为它有非常灵活定位策略; |
| |
定位方法
find_elements(By.XPATH,'xxx')
3.1 路径(绝对路径、相对路径)

| 绝对路径:从最外层元素到指定元素之间所有经过元素层级路径 ;如:/html/body/div/p[2] |
| 提示: |
| 1. 绝对路径以/开始 |
| |
| 相对路径:从第一个符合条件元素开始(一般配合属性来区分);如: |
| 提示: |
| 2. 相对路径以 |
3.2 利用元素属性
| 说明:快速定位元素,利用元素唯一属性; |
| 示例://*[@id='userA'] |
3.3 层级与属性结合
| 说明:要找的元素没有属性,但是它的父级有; |
| 示例://*[@id='p1']/input |
3.4 属性与逻辑结合
| 说明:解决元素之间个相同属性重名问题 |
| 示例://*[@id='telA' and @class='telA'] |
3.5 Xpath-延伸
| //*[text()="xxx"] 文本内容是xxx的元素 |
| |
| //*[starts-with(@attribute,'xxx')] 属性以xxx开头的元素 |
| |
| //*[contains(@attribute,'Sxxx')] 属性中含有xxx的元素 |
4. css定位
什么是css
| CSS 中选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过CSS选择器定位到相应元素,我们在编写自动化测试脚本时是在不断地找到CSS选择器对应的元素。 |
| CSS中通过各种选择器选择不同的页面元素,完成了颜色、字体、宽高等的设定,既然可以通过CSS选择器完成元素选择及样式设定,则也可利用CSS选择器的规则完成自动化测试脚本中的元素定位。 |
| 1. CSS(Cascading Style Sheets)是一种语言,它用来描述HTML和XML的元素显示样式; |
| 2. 在CSS语言中有CSS选择器(不同的策略选择元素),在Selenium中也可以使用这种选择器; |
| 提示: |
| 1. 在selenium中极力推荐CSS定位,因为它比XPath定位速度要快 |
| 2. css选择器语法非常强大,在这里我们只学习在测试中常用的几个 |
CSS定位常用策略 (方式)
| 1. id选择器 |
| 2. class选择器 |
| 3. 元素选择器 |
| 4. 属性选择器 |
| 5. 层级选择器 |
4.1 ID选择器
| 说明:根据元素id属性来选择 |
| 格式:#id 如:#userA <选择id属性值为userA的所有元素> |
4.2 class 选择器
| 说明:根据元素class属性来选择 |
| 格式:.class 如:.telA <选择class属性值为telA的所有元素> |
4.3 元素选择器
| 说明:根据元素的标签名选择 |
| 格式:element 如:input <选择所有input元素> |
4.4 属性选择器
| 说明:根据元素的属性名和值来选择 |
| 格式:[attribute=value] 如:[type="password"] <选择所有type属性值为password的值> |
补充:
- input[type^='p'] 说明:type属性以p字母开头的元素
- input[type$='d'] 说明:type属性以d字母结束的元素
- input[type*='w'] 说明:type属性包含w字母的元素
- input[type~='value'] 说明: type属性包含value的元素
- input[type=value] 说明: type属性是value的所有元素
也有这么的 如 .name.name > #name 含义就是父元素是class为name,且含有name属性,子元素id为name ,最终定位为子元素
3.8 层级选择器
| 说明:根据元素的父子关系来选择 |
| 格式:element>element 如:p>input <返回所有p元素下所有的input元素> |
| 提示:> 可以用空格代替 如:p input 或者 p [type='password'] |
3.4 CSS总结
选择器 | 例子 | 描述 |
#id |
#userA |
id选择器,选择id="userA"的所有元素 |
.class |
.telA |
class选择器,选择class="telA"的所有元素 |
element |
input |
选择所有input元素 |
[attribute=value] |
[type="password"] |
选择type="password"的所有元素 |
element>element |
p>input |
选择所有父元素为p元素的input元素 |
4. XPath与CSS类似功能对比
定位方式 | XPath | CSS |
元素名 |
//input |
input |
id |
//input[@id='userA'] |
#userA |
class |
//*[@class='telA'] |
.telA |
属性 |
1. //※[text()="xxx"] 2. //※[starts-with(@attribute,'xxx')] 3. //※[contains(@attribute,'xxx')] |
1. input[type^='p'] 2. input[type$='d'] 3. input[type*='w'] |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?