首页 > 解决方案 > 获取属性或使用 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,所以如果这样更容易的话,我可以自己解析它。

需要

标签: javascriptpuppeteer

解决方案


看来你需要这样的东西:

const [pfButton] = await sfwFram.$x('//input[@value="T&V Checklist - Browser"]');
const onClick = await page.evaluate(button => button.getAttribute('onclick'), pfButton);

推荐阅读