简体   繁体   English

nightwatch js中的元素无法定位错误

[英]Element could not be located error in nightwatch js

I want to confirm that each my string have text 'Operational'.我想确认我的每个字符串都有文本“操作”。 Here is my code这是我的代码

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')

                    })

                })
            })
}
};

When I run this I receive error - Testing if element <WebsiteGoogleComputeEngineOperational> contains text 'Operational' in 5000ms - expected "contains text 'Operational'" but got: "element could not be located" (5341ms)当我运行它时,我收到错误 - Testing if element <WebsiteGoogleComputeEngineOperational> contains text 'Operational' in 5000ms - expected "contains text 'Operational'" but got: "element could not be located" (5341ms)

When I run without client.assert.containsText(text1, 'Operational') I receive full list of my strings当我在没有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

Where is the problem and how I can resolve this?问题出在哪里,我该如何解决?

You cannot use client.assert.containsText(text1, 'Operational') as this is meant for validating the innertext of the element.您不能使用client.assert.containsText(text1, 'Operational')因为这是为了验证元素的内部文本。 What you're doing is comparing two texts for which you can use a simple if- else.你正在做的是比较两个文本,你可以使用一个简单的 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')
              }
            })

          })
        })
  }
};

Upon Execution, you can see something like this in console -执行后,您可以在控制台中看到类似的内容 -

执行截图

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM