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