Dom 无法使用playwright为有效选择器读取null的属性innerText
这个脚本应该检索DOM元素的内部文本,元素选择器是Dom 无法使用playwright为有效选择器读取null的属性innerText,dom,automation,selector,playwright,Dom,Automation,Selector,Playwright,这个脚本应该检索DOM元素的内部文本,元素选择器是 ('div[class=QzVHcLdwl2CEuEMpTUFaj])我已经手动测试了选择器,并在REPL中调用了getSharePrice函数,该函数也可以工作 const { chromium } = require('playwright'); const util = require('util'); const setTimeoutPromise = util.promisify(setTimeout); (async () =&g
('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)
}
由于某些原因,我收到一个未经处理的PromisejectionWarning:Error:Evaluation failed:TypeError:Cannot read property'innerText'of null错误,不确定原因
我唯一能想到的是元素还没有加载,导致它的计算结果为null,这就是为什么不能调用innerText。添加
wait page.waitForSelector('div[class=QzVHcLdwl2CEuEMpTUFaj]”),然后我的计算块修复了这个问题。看起来问题是由尚未加载元素引起的