如何有条件地单击量角器中的元素?
How to conditionally click an element in Protractor?
在量角器测试中,如果弹出窗口出现(并非总是如此),我需要将其关闭并照常进行测试。这是我必须这样做的代码-
let checkForPopUp = async function() {
element(by.css('button[id="gdprStopEmails"]')).isPresent().then(function (isVisible) {
return isVisible;
});
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
我 运行 这个测试了几次,但没有检查元素是否存在,每次它存在时它都会关闭弹出窗口(如果不存在则测试失败)。自从我引入条件检查以来,它一次也没有关闭弹出窗口,尽管我尽了最大的努力,但我还是无法弄清楚发生了什么。你们有什么想出来的吗?提前致谢!
你不见了return
。您的函数 returns 没有任何明确的内容,因此隐式地 returns undefined
始终是虚假的,并且您的 if
块不会被执行
这应该有效
let checkForPopUp = async function() {
return element(by.css('button[id="gdprStopEmails"]')).isPresent().then(function (isVisible) {
return isVisible;
});
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
但由于您使用的是 async/await
,因此请不要混用语法。我会这样做
let checkForPopUp = async function() {
return element(by.css('button[id="gdprStopEmails"]')).isPresent()
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
请记住,isPresent 不能保证可见性
在量角器测试中,如果弹出窗口出现(并非总是如此),我需要将其关闭并照常进行测试。这是我必须这样做的代码-
let checkForPopUp = async function() {
element(by.css('button[id="gdprStopEmails"]')).isPresent().then(function (isVisible) {
return isVisible;
});
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
我 运行 这个测试了几次,但没有检查元素是否存在,每次它存在时它都会关闭弹出窗口(如果不存在则测试失败)。自从我引入条件检查以来,它一次也没有关闭弹出窗口,尽管我尽了最大的努力,但我还是无法弄清楚发生了什么。你们有什么想出来的吗?提前致谢!
你不见了return
。您的函数 returns 没有任何明确的内容,因此隐式地 returns undefined
始终是虚假的,并且您的 if
块不会被执行
这应该有效
let checkForPopUp = async function() {
return element(by.css('button[id="gdprStopEmails"]')).isPresent().then(function (isVisible) {
return isVisible;
});
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
但由于您使用的是 async/await
,因此请不要混用语法。我会这样做
let checkForPopUp = async function() {
return element(by.css('button[id="gdprStopEmails"]')).isPresent()
}
it('description', async function() {
let hasPopUp = await checkForPopUp();
if(hasPopUp) {
await element(by.id("gdprStopEmails")).click();
}
await connectedAccounts.revokePermission(partnerInfo.revokeId, partnerInfo.confirmRevokeId);
});
请记住,isPresent 不能保证可见性