我正在使用page = browser.newPage()
创建新页面。
然后我用page.setContent(...)
设置html内容,其中包含一个脚本。
脚本加载后我打电话给它,在线下某处尝试使用或localStorage
此时我收到拒绝访问错误:
Error: Evaluation failed: DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
根据我的理解,这是因为为了写入localStorage,必须有一个原点集 - 在我的情况下我不会。
如果我将我的代码更改为首先导航到网址page.goto('http://localhost')
然后执行html注入,我可以毫无问题地写入localStorage。
有没有办法在不必先点击现有网址的情况下写入localStorage?
答案 0 :(得分:2)
对于将来为此而苦苦挣扎的任何人。无法在没有来源的情况下设置本地存储数据。如果您无法导航到某个页面,则可以使用 here 中描述的请求拦截。这也比在网络中调用随机页面要快得多。
await page.setRequestInterception(true)
page.on('request', request => {
request.respond({ status: 200, contentType: 'text/html', body: '' })
})
await page.goto('http://127.0.0.1')
之后,您就可以为该页面设置本地存储。
答案 1 :(得分:0)