在 Cypress 中查询 HTML 元素主要依赖于 cy.get()
方法,该方法允许你根据不同的选择器来查询页面上的元素。以下是一些使用 cy.get()
方法查询 HTML 标签的例子:
使用标签名查询
如果你想选择所有的 <button>
元素,可以这样查询:
javascriptcy.get('button');
使用类选择器
假设你的 HTML 中有这样的元素 <div class="profile">
,你可以使用类选择器查询这个 div:
javascriptcy.get('.profile');
使用 ID 选择器
如果你的元素有 ID,比如 <input id="username">
,可以用 ID 选择器查询:
javascriptcy.get('#username');
使用属性选择器
对于带有特定属性的元素,如 <input type="email">
,可以使用属性选择器:
javascriptcy.get('input[type="email"]');
使用组合选择器
可以组合多个条件来精确查询,比如 <form id="loginForm" class="active">
可以这样查询:
javascriptcy.get('form#loginForm.active');
使用子元素和后代元素选择器
如果你想选择一个特定的子元素或后代元素,你可以这么做:
javascript// 选择 <ul> 下直接的 <li> 子元素 cy.get('ul > li'); // 选择 <div> 内部的所有 <p> 后代元素 cy.get('div p');
使用 :contains() 伪类选择器
如果你想选择包含特定文本的元素,可以使用 :contains()
选择器:
javascriptcy.get('button:contains("Submit")');
使用 .within() 查询子元素
当你想在一个特定的父元素内部查询元素时,可以使用 .within()
方法,这样可以限定查询范围,提高查询的准确性。
javascriptcy.get('#navbar').within(() => { cy.get('.nav-links'); // 只会在 id 为 'navbar' 的元素内部查询 '.nav-links' 类 });
使用 .find() 查询后代元素
.find()
方法用于在已选定的 jQuery 对象集合中查找后代元素:
javascriptcy.get('.container').find('section');
使用别名
有时候你可能会多次查询同一个元素,这时候使用别名会很方便。首先,使用 .as()
方法给元素赋予一个别名:
javascriptcy.get('button').as('submitButton');
然后,你可以使用 @
符号引用这个别名:
javascriptcy.get('@submitButton').click();
结合断言进行查询
Cypress 允许你结合断言来执行查询,来确保元素具有某些特定的状态或属性值:
javascript// 确认元素不仅存在,并且是可见的 cy.get('.important-message').should('be.visible'); // 确认输入框的值 cy.get('input[name="email"]').should('have.value', 'user@example.com');
在实际的 Cypress 测试中,选择正确的查询方法和选择器对于定位元素和编写可靠的测试至关重要。
2024年6月29日 12:07 回复