在 nightwatch 版本 2.6 中使用 GetAttribute 获取元素的值,但获取空字符串

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

提问人:Aaisha Zaman 提问时间:9/21/2023 更新时间:11/10/2023 访问量:16

问:

在守夜人中,我使用GetAttribute,如下所示


 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);
        });
    }

这在 nightwatch 的 v1 中工作正常,但在升级到 v2.6 后,我收到以下错误

失败 [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” + “系统信息: 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.version: unknown', stackTrace: [ { className: 'org.openqa.selen... == 'WHOLE OF LIFE 1') - 预期 [0;32m“WHOLE OF LIFE 1”[0m但得到:[0;31m“{ 堆栈跟踪: '', 堆栈跟踪: [ { 文件名: '抽象HttpCommandCodec.java', 方法名: '解码', 类名: 'org.openqa.selenium.remote.http.AbstractHttpCommandCodec', 行号: 261 }, { 文件名: '抽象HttpCommandCodec.java', 方法名: '解码', 类名: 'org.openqa.selenium.remote.http.AbstractHttpCommandCodec', 行号: 117 }, { 文件名: '协议转换器.java', 方法名: 'handle', 类名: 'org.openqa.selenium.grid.session.remote.ProtocolConverter',lineNumber: 74 }, { fileName: 'RemoteSession.java', methodName: 'execute', className: 'org.openqa.selenium.grid.session.remote.Session', 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.并发的。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' + “构建信息: 版本: '3.141.59', 修订版: 'e82be7d358', 时间: '2018-11-14T08:25:53'\n“ + ”系统信息: 主机: '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.version: unknown', error: 'unknown command' }”[0m [0;90m(0ms)[0m 预期为“WHOLE OF LIFE 1”,但得到:“[object Object]

关于如何解决它的任何想法?

我使用了getText不起作用

gettext nightwatch

评论


答:

0赞 Vladislav Bulanov 10/10/2023 #1

从特定的 Nightwatch 版本开始,您可以使用全局保存的变量名称或browserthis.api

请尝试以下操作:

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 11/10/2023 #2

使用 getElementProperty 命令。

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