contains
获取包含指定文本的DOM元素。DOM元素可以包含_更多_文本但仍能匹配。此外,Cypress会优先选择某些DOM元素而非找到的最深层元素。
语法
.contains(content)
.contains(content, options)
.contains(selector, content)
.contains(selector, content, options)
// ---或---
cy.contains(content)
cy.contains(content, options)
cy.contains(selector, content)
cy.contains(selector, content, options)
用法
正确用法
cy.get('.nav').contains('About') // 获取.nav中包含'About'的元素
cy.contains('Hello') // 获取文档中第一个包含'Hello'的元素
错误用法
cy.title().contains('My App') // 错误,'title'不返回DOM元素
cy.getCookies().contains('_key') // 错误,'getCookies'不返回DOM元素
参数
content (字符串, 数字, 正则表达式)
获取包含该内容的DOM元素。
selector (字符串选择器)
指定一个选择器来筛选包含文本的DOM元素。Cypress会_忽略_其对指定选择器的默认优先级顺序。使用选择器可以返回包含特定文本的更_浅层_元素(树中更高层)。
options (对象)
传入一个选项对象以改变.contains()
的默认行为。
选项 | 默认值 | 描述 |
---|---|---|
matchCase | true | 检查大小写敏感 |
log | true | 在命令日志中显示命令 |
timeout | defaultCommandTimeout | 等待.contains() 解析的超时时间 |
includeShadowDom | includeShadowDom 配置选项值 | 是否遍历Shadow DOM边界并在返回结果中包含Shadow DOM中的元素。 |
生成结果
.contains()
返回找到的新DOM元素。.contains()
是一个查询命令,可以安全地链式调用其他命令。
示例
内容
查找第一个包含某文本的元素
<ul>
<li>苹果</li>
<li>橙子</li>
<li>香蕉</li>
</ul>
// 返回<li>苹果</li>
cy.contains('苹果')
通过值查找input[type='submit']
获取表单元素并在其子元素中搜索内容"提交表单!"
<div id="main">
<form>
<div>
<label>姓名</label>
<input name="name" />
</div>
<div>
<label>年龄</label>
<input name="age" />
</div>
<input type="submit" value="提交表单!" />
</form>
</div>
// 返回input[type='submit']元素并点击它
cy.get('form').contains('提交表单!').click()
数字
查找第一个包含数字的元素
尽管<span>
是包含"4"的最深层元素,但Cypress会因其元素优先级顺序自动返回<button>
元素而非span。
<button class="btn btn-primary" type="button">
消息 <span class="badge">4</span>
</button>
// 返回<button>
cy.contains(4)