提问人:marelmar 提问时间:11/17/2023 更新时间:11/18/2023 访问量:32
自定义 Cypress 命令不返回预期值
Custom Cypress command doesn't return the expected value
问:
我正在编写以下自定义 Cypress 命令,以便在我的 html 页面中获取元素的值。这个想法是这样做的:
MyCompanyAPI.API.Fields.getById('main').value
什么 ist 斋戒和
window.document.getElementById().value
但是我需要在赛普拉斯命令中使用第一个选项。所以我做了这样的事情:
Cypress.Commands.add('getValue', (id) => {
cy.window().then((win) => {
const myCompanyAPI = win.MyCompanyAPI;
if (!hybridForms) {
cy.log('MyCompanyAPI object not found in window.');
return cy.wrap(undefined);
}
return cy.wrap(myCompanyAPI.API.Fields).invoke('getById', id).then((result) => {
const value = result && result.value;
cy.log(`Value for ${id}:`, value);
if (value === undefined) {
cy.log(`API call for ${id} returned undefined.`);
}
return cy.wrap(value);
});
});
});
胜利。MyCompanyAPI 和 myCompanyAPI.API.Fields 确实存在于 win 中。但是当我尝试在myCompanyAPI.API.Fields中调用函数getByID()时,结果只是:
命令:log index-a10e15b7.js:103972 消息:返回未定义 #main 的 API 调用。 index-a10e15b7.js:103972 参数:
我尝试过很多方法。其中一个像这样,为了 debbug:
Cypress.Commands.add('getValue', (id) => {
cy.window().then((win) => {
const hybridForms = win.HybridForms;
if (!hybridForms) {
cy.log('HybridForms object not found in window.');
return cy.wrap(undefined);
}
const api = hybridForms.API;
if (!api) {
cy.log('API not found in HybridForms.');
return cy.wrap(undefined);
}
const fields = api.Fields;
if (!fields) {
cy.log('Fields not found in API.');
return cy.wrap(undefined);
}
const getById = fields.getById;
if (!getById) {
cy.log('getById not found in Fields.');
return cy.wrap(undefined);
}
const value = getById(id);
if (!value) {
cy.log(`Value for ${id} is undefined.`);
return cy.wrap(undefined);
}
const finalValue = value.value;
cy.log(`Final value for ${id}:`, finalValue);
return cy.wrap(finalValue);
});
});
但结果也包括:.Value for #main is undefined.
这里有人可以在这个问题上帮助我吗?
提前致谢!
我需要接收
MyCompanyAPI.API.Fields.getById('main').value
但是在赛普拉斯自定义命令中
答:
0赞
adsy
11/18/2023
#1
看起来您可能正在将参数传递给,但它期望 since 不需要说明符。该选择器语法仅与 while 等方法相关,并且已经在寻找 ID,因此鉴别器不相关。"#main"
getValue
"main"
getElementById
#
querySelector
getElementById
#
评论
0赞
marelmar
11/20/2023
这正是问题所在。@adsy,感谢帮助我看到这个“细节”。
评论