selenium - 我开始在 New Relic 中浏览 selenium 脚本,当我尝试打印属性时,我无法获取此数据
问题描述
输出:
ManagedPromise { flow_: ControlFlow {propagateUnhandledRejections_: true, activeQueue_: TaskQueue { name_: 'TaskQueue::3218', flow_: [Circular], tasks_: [Array], interrupts_: null, pending_: null, subQ_: null, state_: ' new', unhandledRejections_: Set {} }, taskQueues_: Set { [TaskQueue], [TaskQueue] }, shutdownTask_: null, hold_: Timeout { call : false, idleTimeout: 2147483647, idlePrev: [TimersList], idleNext: [TimersList] , idleStart:598, onTimeout:[Function], timerArgs:未定义, 重复:2147483647, 销毁:false,[Symbol(unrefed)]:false,[Symbol(asyncId)]:18,[Symbol(triggerId)]:1} }, 堆: { 任务:WebElement.schedule (/opt/runtimes/ ) 中 Driver.schedule (/opt/runtimes/4.0.0/node_modules/selenium-webdriver/lib/webdriver.js:807:17) 中的 WebElement.getAttribute(id) 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 在进程。tickCallback (internal/process/next_tick.js:68:7) name: 'Task' }, parent : null, callbacks : null, state : 'pending',handled: false, value: undefined, queue_: null }
解决方案
如果您在此处查看 Selenium 的 WebElement Node API 的文档:
我们可以看到 getAttribute 返回的是一个承诺,而不是您期望的数据对象。这也反映在您共享脚本的日志中:
Output:
ManagedPromise {... etc}
所以从promise中提取数据的方法是我们必须等待promise解决。您可以通过then
在 Promise 中添加链来实现。
element.getAttribute('id').then((data)=>{
console.log(data);
})
推荐阅读
- python-3.x - Python:如何将 json 逗号分隔键转换为字典
- dialogflow-es - Dialogflow 后续意图未在 Actions on Google 上触发
- oracle - Oracle Apex 交互式网格 - 使用只读方式保存不正确的记录
- github - 在终端中删除 gh 页面不会影响 github
- lua - 尝试在 Lua 脚本上调用 nil 值
- javascript - 尽管是对象请求,ExpressJS 似乎是字符串类型
- jenkins - Jenkins 用旧的集成插件替换更新的插件
- python - 尝试使用 os.rename 重命名符号链接时出现 FileNotFoundError 错误
- node.js - 如何使用 1M 记录优化 mongodb 中的 upsert 批量查询
- spring - Spring Security 不将过滤器应用于健康检查