Using GetAttribute to get value of element in nightwatch version 2.6 but getting empty string

27 views Asked by At

In nightwatch I was using GetAttribute as below


 if (options.policyNumber >= '') {
      this.browser
        .getAttribute(this.selectors.panelProtection.tabDetails.inputPolicyNumber, value, (result: NightwatchCallbackResult) => (assertPolicyNumber = result.value))
        .perform(() => {
          this.browser.assert.equal(assertPolicyNumber, options.policyNumber);
        });
    }

This worked fine in v1 of nightwatch but after upgrading to V2.6 I am getting the below error

Failed [equal]: ({ error: 'unknown command', message: 'GET /session/5cea3453c156c68a50a9f50c8f637212/element/B7FF5D2AAEB7EB488CF09866093B7EB4_element_685/attribute/value\n' + "Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\n" + "System info: host: 'UK03-L4JBF6G3', ip: '192.168.1.178', os.name: 'Windows 11', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_321'\n" + 'Driver info: driver.version: unknown', stackTrace: [ { className: 'org.openqa.selen... == 'WHOLE OF LIFE 1') - expected [0;32m"WHOLE OF LIFE 1"[0m but got: [0;31m"{ stacktrace: '', stackTrace: [ { fileName: 'AbstractHttpCommandCodec.java', methodName: 'decode', className: 'org.openqa.selenium.remote.http.AbstractHttpCommandCodec', lineNumber: 261 }, { fileName: 'AbstractHttpCommandCodec.java', methodName: 'decode', className: 'org.openqa.selenium.remote.http.AbstractHttpCommandCodec', lineNumber: 117 }, { fileName: 'ProtocolConverter.java', methodName: 'handle', className: 'org.openqa.selenium.grid.session.remote.ProtocolConverter', lineNumber: 74 }, { fileName: 'RemoteSession.java', methodName: 'execute', className: 'org.openqa.selenium.grid.session.remote.RemoteSession', lineNumber: 129 }, { fileName: 'WebDriverServlet.java', methodName: 'lambda$handle$0', className: 'org.openqa.selenium.remote.server.WebDriverServlet', lineNumber: 235 }, { fileName: null, methodName: 'call', className: 'java.util.concurrent.Executors$RunnableAdapter', lineNumber: -1 }, { fileName: null, methodName: 'run', className: 'java.util.concurrent.FutureTask', lineNumber: -1 }, { fileName: null, methodName: 'runWorker', className: 'java.util.concurrent.ThreadPoolExecutor', lineNumber: -1 }, { fileName: null, methodName: 'run', className: 'java.util.concurrent.ThreadPoolExecutor$Worker', lineNumber: -1 }, { fileName: null, methodName: 'run', className: 'java.lang.Thread', lineNumber: -1 } ], message: 'GET /session/5cea3453c156c68a50a9f50c8f637212/element/B7FF5D2AAEB7EB488CF09866093B7EB4_element_685/attribute/value\n' + "Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\n" + "System info: host: 'UK03-L4JBF6G3', ip: '192.168.1.178', os.name: 'Windows 11', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_321'\n" + 'Driver info: driver.version: unknown', error: 'unknown command' }"[0m [0;90m(0ms)[0m Expected "WHOLE OF LIFE 1" but got: "[object Object]

any ideas on how to fix it?

I have used the getText not working

2

There are 2 answers

0
Vladislav Bulanov On

Since a specific Nightwatch version you can reference the Nightwatch's api by using the global saved variable name browser or this.api

Try the following:

if (options.policyNumber >= '') {
      browser
        .getAttribute(this.selectors.panelProtection.tabDetails.inputPolicyNumber, value, (result: NightwatchCallbackResult) => (assertPolicyNumber = result.value))
        .perform(() => {
          this.browser.assert.equal(assertPolicyNumber, options.policyNumber);
        });
    }
0
Tanner Logan On

Use the getElementProperty command.

browser.getElementProperty(this.selectors.panelProtection.tabDetails.inputPolicyNumber, value, (result) => assertPolicyNumber = result.value)