[英]Cypress Custom Command - Break from a .each() loop and return a value to be used in further steps
我是 Cypress 的新手 [3 天 :)]。 我正在創建一個自定義命令,它試圖在表中查找列的列索引。 我想返回列索引並將其存儲在一個變量中並在以后的步驟中使用它。
這是我嘗試過的:
Cypress.Commands.add('get_table_column_index', (columnName) => {
cy.getIframeBody().find('table').within(() => {
cy.get('tr th[scope=col]').each((element, index) => {
let colName = element.text();
cy.log(index, colName);
if(colName == columnName)
{
cy.wrap(index).as('index');
return false;
}
});
});
});
let columnIndex = cy.get_table_column_index('ColName').get('@index');
cy.log('index' + columnIndex);
索引是[對象對象]
有人可以指導我解決這個問題嗎? 我究竟做錯了什么?
我可以看到wrap
返回正確的索引值,但我不確定如何提取和使用它。
========更新========
我試過這個,看起來它能夠記錄正確的值:
let columnIndex =
cy.get_table_column_index(column_name).get('@index');
columnIndex.then(index => cy.log(index));
現在,我正在嘗試將其擴展為在下一步中使用索引值,如下所示:
Cypress.Commands.add('get_text', (row_num, column_name) => {
let txt;
cy.test_index(column_name).get('@index').then(index => {
let element = cy.get('main > table').within(() => {
cy.log('${index');
cy.get('tr:nth-child(${row_num}) td:nth-child(${index})');
//txt = element.text();
cy.log(txt);
});
});
return txt;
})
我無法弄清楚如何在cy.get('tr:nth-child(${row_num}) td:nth-child(${index})';
表達式中使用index
和row_num
的值。
Error: Syntax error, unrecognized expression: :nth-child
您需要做的就是改變您使用變量的方式。
cy.log(this.index + columnIndex);
我能夠像這樣工作:
.get('@index').then(....
用於提取由我的方法get_table_column_index
返回的索引值。
然后再次使用cy.wrap
返回單元格值。
Cypress.Commands.add('get_text', (row_num, column_name) => {
cy.get_table_column_index(column_name).get('@index').then(index => {
cy.get('main > table').within(() => {
cy.get(`tr:nth-child(${row_num}) td:nth-child(${index})`)
.invoke('text')
.then((text) => {
cy.log("Text = " + text);
return cy.wrap(text).as('cell_value');
})
});
});
})
最后在我的方法調用中:
let cell_text = cy.get_text(2, 'Licensing').get('@cell_value');
cell_text.then(cell_value => {
cy.log(cell_value);
expect(cell_value).to.include('QTP');
})
我不能夠做的唯一一件事就是值存儲在一個變量,並使用它,而鏈接的任何命令狀then
以提取其價值。
如果有人可以提供更多信息,那就太好了。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.