无法使用播放器

问题描述

该脚本应该检索DOM元素的innerText,元素选择器是 ('div[class=QzVHcLdwl2CEuEMpTUFaj]'),我已经手动测试了选择器,并在REPL中调用了getSharePrice函数。

const { chromium } = require('playwright');
const util = require('util');
const setTimeoutPromise = util.promisify(setTimeout);

(async () => {
  const userDataDir = 'path'
  const browser = await chromium.launchPersistentContext(userDataDir,{headless: false }); 
  const page = await browser.newPage();
  await page.goto('https://robinhood.com',{timeout: 60000,waitUntil: 'domcontentloaded'});

  await getSharePrice(page)

  await setTimeoutPromise(1000);
  await browser.close();
})();


async function getSharePrice(page) {
    const price = await page.evaluate(() => {
        return {
            price: document.querySelector('div[class=QzVHcLdwl2CEuEMpTUFaj]').innerText.replace(/\D/g,'')
        }
    });
    console.log(price)
  }

由于某种原因,我遇到了(node:59324) UnhandledPromiseRejectionWarning: Error: Evaluation failed: TypeError: Cannot read property 'innerText' of null错误,不确定原因。

我想出的唯一一件事是该元素尚未加载,导致其评估为null,这就是为什么无法调用innerText的原因。

解决方法

在我的评估块之前添加public static final DateTimeFormatter ISO_DATE; static { ISO_DATE = new DateTimeFormatterBuilder() .parseCaseInsensitive() .append(ISO_LOCAL_DATE) .optionalStart() .appendOffsetId() .toFormatter(ResolverStyle.STRICT,IsoChronology.INSTANCE); } 可以解决此问题。看起来问题是由尚未加载的元素引起的

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...