我一直在测试一个API。现在我得到了HTML格式的API响应,其中我有表数据(没有表名(,在I下有ahref标记和测试。我必须验证响应主体的ahref文本。
所以任何人都有任何对我有帮助的想法。
我试过了:
cy.wrap(res.body).get('table').contains('td','textname')
但是得到超时错误。
您可以使用JavaScript的DOMParser
将字符串解析为DOM变量。
it('tests something', () => {
// Declare the DOMParser
const parser = new DOMParser();
cy.request('/foo').then((res) => {
// Parse the string (in this case, the response body) as a `text/html` object.
const dom = parser.parseFromString(res.body, 'text/html');
// use document functions below to traverse the dom
});
});
要使用Cypress命令从响应中测试HTML,您需要编写并访问它,以便Cypress认为它是一个合法的网页
cy.writeFile('./cypress/fixtures/fragment.html', html)
.then(() => { // writing is async so wait for it to complete
cy.visit('./cypress/fixtures/fragment.html')
cy.get('table').contains('td','textname')
})
应该在单独的it()
块中进行,以避免与您的主应用程序页面发生冲突。
否则,您可以按照@agoff的模式并使用dom.querySelector()
来查询数据。