【问题标题】:I started to make selenium scripts browse in New Relic, and when i try to print a Attribute i cant get this data我开始在 New Relic 中浏览 selenium 脚本,当我尝试打印属性时,我无法获取此数据
【发布时间】:2021-10-05 15:20:16
【问题描述】:

脚本:

输出:

托管承诺 { 流动_: 控制流 { 传播UnhandledRejections_:真, 活动队列_: 任务队列 { name_: '任务队列::3218', flow_:[循环], 任务_:[数组], 中断_:空, 待定_:空, subQ_:空, state_: '新', unhandledRejections_: 设置 {} }, taskQueues_: 设置 { [TaskQueue], [TaskQueue] }, 关机任务_:空, 抓住_: 超时 { 称为:假, idleTimeout: 2147483647, idlePrev: [TimersList], idleNext: [TimersList], idleStart: 598, onTimeout: [函数], timerArgs:未定义, 重复:2147483647, 销毁:错误, [符号(未引用)]:假, [符号(asyncId)]:18, [符号(triggerId)]: 1 } }, 堆栈: { 任务:WebElement.getAttribute(id) 在 Driver.schedule (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/webdriver.js:807:17) 在 WebElement.schedule (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/webdriver.js:2010:25) 在 WebElement.getAttribute (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/webdriver.js:2263:17) 在评估(在 JobResource.getScriptFn 评估(/opt/runtimes/4.0.0/modules/synthetics-runner/lib/job-resource/index.js:79:19),:64:37) 在 ManagedPromise.invokeCallback (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/promise.js:1376:14) 在 TaskQueue.execute (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/promise.js:3084:14) 在 TaskQueue.executeNext (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/promise.js:3067:27) 在 asyncRun (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/promise.js:2927:27) 在/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/promise.js:668:7 在 process.tickCallback (internal/process/next_tick.js:68:7) name: 'Task' }, 父母:空, 回调:空, 状态: '待定', 处理:假, 值:未定义, queue_: null }

【问题讨论】:

    标签: selenium newrelic newrelic-synthetics


    【解决方案1】:

    如果您在此处查看 Selenium 的 WebElement Node API 文档:

    https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebElement.html

    我们可以看到 getAttribute 返回的是一个承诺,而不是您期望的数据对象。这也反映在您共享脚本的日志中:

    Output:
    ManagedPromise {... etc}
    

    所以从 Promise 中提取数据的方法是我们必须等待 Promise 解决。您可以通过在 Promise 中添加 then 链来实现。

    element.getAttribute('id').then((data)=>{
    console.log(data);
    })
    

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多