Playwright无法在Spotify网页端播放歌曲问题排查求助
问题
我用Playwright成功访问了Spotify网页端(open.spotify.com),但手动导航到歌曲并点击播放按钮后完全没反应。已经试过Firefox和Chromium浏览器,两者都满足Spotify的版本要求,目前找不到问题原因。
附代码:
const baseURL = 'https://open.spotify.com/' const playwright = require('playwright') const browserType = ['firefox'] function sleep(ms) { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); } async function login(email, password, proxy) { const browser = await playwright[browserType].launch({headless:false}) /*const browser = await playwright[browserType].launch({ headless: false, proxy: { server: proxy, }, });*/ const page = await browser.newPage(); await page.goto('https://accounts.spotify.com/en/login?continue=https%3A%2F%2Fopen.spotify.com%2F'); let emailField = page.getByPlaceholder('Email address or username') let passwordField = page.getByPlaceholder('Password') await emailField.type(email, {delay: 5}) await passwordField.type(password, {delay: 5}) let loginButton = page.getByTestId('login-button') await loginButton.click() }
排查方向与修复建议
修正浏览器类型定义错误
原代码中browserType是数组['firefox'],但playwright[browserType]需要字符串类型的浏览器标识(如'firefox'),这会导致浏览器启动失败,先改成:const browserType = 'firefox'授予音频权限
Playwright默认可能未开启音频访问权限,Spotify播放需要该权限,启动浏览器时添加permissions参数:const browser = await playwright[browserType].launch({ headless: false, permissions: ['audio'] })等待页面完全加载
登录后页面跳转可能未完成就进行操作,添加等待确保页面资源加载完毕:await loginButton.click() // 等待页面进入空闲状态(资源加载完成) await page.waitForLoadState('networkidle') // 等待播放按钮可点击 await page.waitForSelector('[data-testid="play-button"]')检查控制台错误
打开浏览器开发者工具的Console面板,查看是否有JS报错(如资源加载失败、权限被拒绝等),这是定位问题的核心依据。尝试隐身模式
启动浏览器时开启隐身模式,避免缓存或本地存储导致的页面异常:const context = await browser.newContext({ incognito: true }) const page = await context.newPage()
内容的提问来源于stack exchange,提问作者iris87
相关产品推荐
相关产品推荐

