提问人:Vuimov Nikita 提问时间:11/10/2023 最后编辑:Mister JojoVuimov Nikita 更新时间:11/10/2023 访问量:55
Document.getElementById 返回 “undefined”,即使该元素存在 [closed]
Document.getElementById returns "undefined", even though the element exists [closed]
问:
我目前正在处理我的项目,我需要从网站上解析一些信息。我正在使用 Node.Js 库“puppeteer”。我需要单击该元素,但 Document.getElementById 返回“undefined”。你可以帮我吗?
我需要点击这个元素:它位于页面底部的很多元素下:
<div data-v-55c47311="" id="VikaWidget">
<script type="text/javascript">
<script type="text/javascript">
<script type="text/javascript">
<script src="/widget/script.js?theme=left" type="text/javascript"></script>
<link href="https://vi.admhmao.ru/assets/vi_widget_2/css/app.4291e2e8.css" rel="stylesheet">
<div data-v-55c47311="" id="VikaWidget">
<div id="widget_main" style="display: block;">
</body>
这是一个小部件,单击它会打开一个带有虚拟助手的窗口。 我已经成功地从页面中解析了一些元素,因此我确信与网站的连接没有问题。 这是我的代码:
const puppeteer = require('puppeteer');
let scrape = async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://admhmao.ru');
const result = await page.evaluate(() => {
return document.getElementById('VikaWidget')
});
await browser.close();
return result;
};
scrape().then((value) => {
console.log(value); // The result is 'undefined'
});
你知道问题可能是什么吗?
答:
2赞
Fatorice
11/10/2023
#1
看起来,您在渲染 DOM 之前调用了该函数。尝试像这样修改调用:document.getElementById
page.goto()
await page.goto('https://admhmao.ru', {waitUntil: 'domcontentloaded'});
当您尝试获取的元素是动态添加的时,您还可以添加以下调用:
await page.waitForSelector('#VikaWidget', {
visible: true,
});
评论
id
<script type="text/javascript">
</script>
<script>
<script><script>
<script>
Uncaught SyntaxError: expected expression, got '<'
)<script>
evaluate
块返回 DOM 节点。用。如果这不起作用,请确保先这样做。如果这不起作用,请分享一个最小的可重现示例。谢谢。return document.getElementById('VikaWidget').textContent
await page.waitForSelector("#VikeWidget")