定位策略
- 常遇问题
- 不知道应该使用哪种定位方式?
- 元素定位不到无法解决?
定位方式
1. 通用场景
- 1.1. 通用 Web 定位方式
定位策略 | 描述 |
---|---|
class name | 通过 class 属性定位元素 |
css selector | 通过匹配 css selector 定位元素 |
id | 通过 id 属性匹配元素 |
name | 通过 name 属性定位元素 |
link text | 通过 text标签中间的 text 文本定位元素 |
partial link text | 通过 text标签中间的 text 文本的部分内容定位元素 |
tag name | 通过 tag 名称定位元素 |
xpath | 通过 xpath 表达式匹配元素 |
- 选择定位器通用原则
-
- 与研发约定的属性优先
- class属性:[name=‘locate’]
-
- 身份属性 id,name(web定位)
-
- 复杂场景使用组合定位:
- xpath,css
- 属性动态变化(id,text)
- 重复元素属性(id,text,class)
- 父子定位(子定位父)
-
- js定位
-
- 1.2. js 定位(CSS)
- document.querySelector(“id的值”)
- 相关章节
- 高级定位 - xpath
- 高级定位 - css
- 执行 JavaScript 脚本
- 面试题 - 定位不到元素
2. 特殊场景
- 2.1. 弹框 - alert()
- 场景:web 页面 alert 弹框
- 解决:web 需要使用 driver.switchTo().alert() 处理
- 2.2. 下拉框/日期控件
- 场景:
- input 标签组合的下拉框无法定位
- input 标签组合的日期控件无法定位
- 解决:面对这些元素,我们可以引入 JS 注入技术来解决问题
- 场景:
- 2.3. 文件上传
- 场景:input 标签文件上传
- 解决:input 标签直接使用 send_keys() 方法
- 2.4. 其他场景