守夜人 js 中找不到元素错误
Element could not be located error in nightwatch js
我想确认我的每个字符串都有文本 'Operational'。这是我的代码
module.exports = {
test: function (client) {
var text1;
client
.maximizeWindow()
.url('https://status.gitlab.com/')
.waitForElementVisible('img[alt="Logo"]', 10 * 1000)
.elements('css selector', '.component',
function (elements) {
elements.value.forEach(function (elementsObj) {
client.elementIdText(elementsObj.ELEMENT, function (result) {
text1 = result.value
text1 = text1.replace(/\s+/g, '')
console.log(text1);
client.assert.containsText(text1, 'Operational')
})
})
})
}
};
当我 运行 我收到错误 - Testing if element <WebsiteGoogleComputeEngineOperational> contains text 'Operational' in 5000ms - expected "contains text 'Operational'" but got: "element could not be located" (5341ms)
当我 运行 没有 client.assert.containsText(text1, 'Operational')
时,我收到了我的字符串的完整列表
WebsiteGoogleComputeEngineOperational
APIGoogleComputeEngineOperational
Git(sshandhttps)GoogleComputeEngineOperational
PagesGoogleComputeEngineOperational
CI/CDGoogleComputeEngineOperational
BackgroundProcessingGoogleComputeEngineOperational
SupportServicesZendeskOperational
packages.gitlab.comAWSOperational
customers.gitlab.comAzureOperational
version.gitlab.comAWSOperational
forum.gitlab.comDigitalOceanOperational
WindowsRunners(beta)GoogleComputeEngineOperational
CanaryGoogleComputeEngineOperational
dashboards.gitlab.comGoogleComputeEngineOperational
问题出在哪里,我该如何解决?
您不能使用 client.assert.containsText(text1, 'Operational')
,因为这是为了验证元素的内部文本。您正在做的是比较两个文本,您可以对其使用简单的 if-else。
module.exports = {
test: function(client) {
var text1;
client
.maximizeWindow()
.url('https://status.gitlab.com/')
.waitForElementVisible('img[alt="Logo"]', 10 * 1000)
.elements('css selector', '.component',
function(elements) {
elements.value.forEach(function(elementsObj) {
client.elementIdText(elementsObj.ELEMENT, function(result) {
text1 = result.value.replace(/\s+/g, '')
if (text1.includes('Operational')) {
console.log('Found Operational in - ' + '"' + text1 + '"' + '\n')
} else {
console.log('Didn\'t Found Operational in - ' + '"' + text1 + '"' + '\n')
}
})
})
})
}
};
执行后,您可以在控制台中看到类似的内容 -
我想确认我的每个字符串都有文本 'Operational'。这是我的代码
module.exports = {
test: function (client) {
var text1;
client
.maximizeWindow()
.url('https://status.gitlab.com/')
.waitForElementVisible('img[alt="Logo"]', 10 * 1000)
.elements('css selector', '.component',
function (elements) {
elements.value.forEach(function (elementsObj) {
client.elementIdText(elementsObj.ELEMENT, function (result) {
text1 = result.value
text1 = text1.replace(/\s+/g, '')
console.log(text1);
client.assert.containsText(text1, 'Operational')
})
})
})
}
};
当我 运行 我收到错误 - Testing if element <WebsiteGoogleComputeEngineOperational> contains text 'Operational' in 5000ms - expected "contains text 'Operational'" but got: "element could not be located" (5341ms)
当我 运行 没有 client.assert.containsText(text1, 'Operational')
时,我收到了我的字符串的完整列表
WebsiteGoogleComputeEngineOperational
APIGoogleComputeEngineOperational
Git(sshandhttps)GoogleComputeEngineOperational
PagesGoogleComputeEngineOperational
CI/CDGoogleComputeEngineOperational
BackgroundProcessingGoogleComputeEngineOperational
SupportServicesZendeskOperational
packages.gitlab.comAWSOperational
customers.gitlab.comAzureOperational
version.gitlab.comAWSOperational
forum.gitlab.comDigitalOceanOperational
WindowsRunners(beta)GoogleComputeEngineOperational
CanaryGoogleComputeEngineOperational
dashboards.gitlab.comGoogleComputeEngineOperational
问题出在哪里,我该如何解决?
您不能使用 client.assert.containsText(text1, 'Operational')
,因为这是为了验证元素的内部文本。您正在做的是比较两个文本,您可以对其使用简单的 if-else。
module.exports = {
test: function(client) {
var text1;
client
.maximizeWindow()
.url('https://status.gitlab.com/')
.waitForElementVisible('img[alt="Logo"]', 10 * 1000)
.elements('css selector', '.component',
function(elements) {
elements.value.forEach(function(elementsObj) {
client.elementIdText(elementsObj.ELEMENT, function(result) {
text1 = result.value.replace(/\s+/g, '')
if (text1.includes('Operational')) {
console.log('Found Operational in - ' + '"' + text1 + '"' + '\n')
} else {
console.log('Didn\'t Found Operational in - ' + '"' + text1 + '"' + '\n')
}
})
})
})
}
};
执行后,您可以在控制台中看到类似的内容 -