如何解决无法使用播放器
该脚本应该检索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);
}
可以解决此问题。看起来问题是由尚未加载的元素引起的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。