javascript - 获取属性或使用 Puppeteer
问题描述
我正在尝试使用 Puppeteer 访问下面显示的按钮的 onClick 属性。
我的代码如下:
const pfButton = await sfwFram.$x('//input[@value="T&V Checklist - Browser"]');
console.log(pfButton);
我有正确的元素,因为我可以点击它。
await pfButton[0].click();
控制台输出如下:
[
ElementHandle {
_disposed: false,
_context: ExecutionContext {
_client: [CDPSession],
_world: [DOMWorld],
_contextId: 51
},
_client: CDPSession {
eventsMap: [Map],
emitter: [Object],
_callbacks: Map {},
_connection: [Connection],
_targetType: 'page',
_sessionId: '93A9A7BA5726B88223938422C56624FD'
},
_remoteObject: {
type: 'object',
subtype: 'node',
className: 'HTMLInputElement',
description: 'input.svmxbtn.smallbtn.enabledbtn',
objectId: '-5187625421942822803.51.5'
},
_page: Page {
eventsMap: Map {},
emitter: [Object],
_closed: false,
_timeoutSettings: [TimeoutSettings],
_pageBindings: Map {},
_javascriptEnabled: true,
_workers: Map {},
_fileChooserInterceptors: Set {},
_client: [CDPSession],
_target: [Target],
_keyboard: [Keyboard],
_mouse: [Mouse],
_touchscreen: [Touchscreen],
_accessibility: [Accessibility],
_frameManager: [FrameManager],
_emulationManager: [EmulationManager],
_tracing: [Tracing],
_coverage: [Coverage],
_screenshotTaskQueue: [ScreenshotTaskQueue],
_viewport: [Object]
},
_frameManager: FrameManager {
eventsMap: [Map],
emitter: [Object],
_frames: [Map],
_contextIdToContext: [Map],
_isolatedWorlds: [Set],
_client: [CDPSession],
_page: [Page],
_networkManager: [NetworkManager],
_timeoutSettings: [TimeoutSettings],
_mainFrame: [Frame]
}
}
]
我不介意只获取outerHTML,所以如果这样更容易的话,我可以自己解析它。
解决方案
看来你需要这样的东西:
const [pfButton] = await sfwFram.$x('//input[@value="T&V Checklist - Browser"]');
const onClick = await page.evaluate(button => button.getAttribute('onclick'), pfButton);
推荐阅读
- php - EasyAdmin 3:嵌套表单(另一个集合中的调用)
- python - Pandas.to_datetime() 试图在 DataFrame 的切片副本上设置值
- httpclient - Vert.x - 如何知道哪个连接被关闭
- mysql - 选择导出模式时导出进度出错
- android - 将 Javascript 注入 Android
- vue.js - Vue 模板字符串以编程方式编译为 html 字符串
- python - 将文件从 Google Cloud Storage 下载到远程服务器
- android - 我们如何使用 API 在 node.js 服务器上识别和验证平台请求(web、android、ios)?
- javascript - JavaScript 总价目表不显示
- c++ - void* 指针到压缩结构的最高效的无副本映射?