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

问题描述 投票:0回答:2

在 Nightwatch 中我使用 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 后我收到以下错误

失败[等于]:({错误:'未知命令',消息:'GET /session/5cea3453c156c68a50a9f50c8f637212/element/B7FF5D2AAEB7EB488CF09866093B7EB4_element_685/attribute/value ' + "构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:25:53' " + "系统信息:主机:'UK03-L4JBF6G3',ip:'192.168.1.178',os.name:'Windows 11',os.arch:'x86',os.version:'10.0',java.version :'1.8.0_321' " + '驱动程序信息:driver.version:未知',stackTrace:[ { className:'org.openqa.selen... == 'WHOLE OF LIFE 1') - 预期 [0;32m"WHOLE OF LIFE 1"[ 0m 但得到:[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 }],消息:'GET /session/5cea3453c156c68a50a9f50c8f637212/element/B7FF5D2AAEB7EB488CF09866093B7EB4_element_685/attribute/value ' + "构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:25:53' " + "系统信息:主机:'UK03-L4JBF6G3',ip:'192.168.1.178',os.name:'Windows 11',os.arch:'x86',os.version:'10.0',java.version :'1.8.0_321' " + '驱动程序信息:driver.version:未知',错误:'未知命令' }"[0m [0;90m(0ms)[0m 预期为“WHOLE OF LIFE 1”,但得到:“[object Object]

关于如何修复它有什么想法吗?

我使用了 getText 不起作用

gettext nightwatch
2个回答
0
投票

从特定的 Nightwatch 版本开始,您可以通过使用全局保存的变量名称

browser
this.api

来引用 Nightwatch 的 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
投票

使用 getElementProperty 命令。

browser.getElementProperty(this.selectors.panelProtection.tabDetails.inputPolicyNumber, value, (result) => assertPolicyNumber = result.value)
© www.soinside.com 2019 - 2024. All rights reserved.