Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 木偶演员页面。点击不';不要在无头模式下工作 有什么问题吗_Node.js_Puppeteer - Fatal编程技术网

Node.js 木偶演员页面。点击不';不要在无头模式下工作 有什么问题吗

Node.js 木偶演员页面。点击不';不要在无头模式下工作 有什么问题吗,node.js,puppeteer,Node.js,Puppeteer,我尝试使用Puppeter单击某些元素,并尝试了页面。单击和页面。评估此任务的 如果在headless=false模式下,两种方法都能正常工作 如果处于headless=true模式,page.evaluate工作,但page。单击将永远挂起 然后,我做的是页面。waitForSelector显式地用于页面之前的元素。单击,请参见下面的代码 而且看起来waitForSelector也会永远挂起 有人能帮我理解为什么它挂在无头模式下吗 环境 代码 根据您的评论,headless中的屏幕可能与您

我尝试使用Puppeter单击某些元素,并尝试了
页面。单击
页面。评估此任务的

  • 如果在
    headless=false
    模式下,两种方法都能正常工作
  • 如果处于
    headless=true
    模式,
    page.evaluate
    工作,但
    page。单击
    将永远挂起
然后,我做的是
页面。waitForSelector
显式地用于
页面之前的元素。单击
,请参见下面的代码

而且看起来
waitForSelector
也会永远挂起

有人能帮我理解为什么它挂在无头模式下吗

环境 代码
根据您的评论,headless中的屏幕可能与您正在测试的元素的大小不符。该元素是否应该显示在笔记本电脑大小的屏幕上(在您的情况下,宽度>1200px)

您可以使用选项
--window size=width,height
设置木偶演员的窗口大小,例如:

args: [
            '--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
            '--user-data-dir=/tmp/user_data/',
            '--window-size=1200,800',
        ],

我发现防止此问题的一个更合适的方法是在单击之前调用hover,如下所示:

await page.hover(selector)
await page.click(selector)

这样,浏览器将滚动到选择器,确保它可见并且可以单击,而不管窗口大小。

您是否尝试过在无头模式下拍摄屏幕快照?@Capripot,很好的建议,让我现在试试,过一会儿就会回来。@Capripot,我尝试过设置大的视口大小,现在
页面。单击
成功,非常感谢男士:-)谢谢你发布了答案,你能解释一下为什么
page.evaluate
在设置窗口大小之前起作用吗?我的意思是,
page.evaluate
可能没有点击正确的东西,但它没有挂起。可能是
querySelector
没有考虑元素的可见性,只定位元素,然后单击假定的位置。“--start maximized”可能也会有所帮助。
args: [
            '--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
            '--user-data-dir=/tmp/user_data/',
            '--window-size=1200,800',
        ],
await page.hover(selector)
await page.click(selector)