Playwright Python报错'NoneType'对象无inner_html属性如何解决
报错原因
该AttributeError报错的直接原因是page.query_selector("#grvPedidos")执行时未匹配到对应元素,返回了None,后续调用inner_html()方法时自然触发属性不存在错误。
你现有代码的核心问题出在执行逻辑和等待方式:
- 你先执行了元素查询操作,再调用
time.sleep(3)硬等待,等于查询时页面还未加载完成,等待操作完全没有起到等元素渲染的作用 time.sleep是不可靠的硬等待方式,受网络波动、页面渲染速度影响很大,Playwright内置了自动等待机制,更推荐使用官方等待API,避免偶现失败
修复方案
方案1:使用Locator API(最推荐)
Playwright官方更推荐使用Locator API,自带自动等待逻辑,无需手动写等待代码:
print(await page.locator("#grvPedidos").inner_html())
方案2:调整等待顺序+使用官方等待API
如果需要显式等待元素加载完成,可以用wait_for_selector方法:
table = await page.wait_for_selector("#grvPedidos") print(await table.inner_html())
方案3:保留硬等待的调整方式
如果确实需要使用time.sleep,要将等待操作放到元素查询之前:
time.sleep(3) table = await page.query_selector("#grvPedidos") print(await table.inner_html())
异常排查补充
如果以上方案还是无法找到元素,需要确认目标表格是否嵌套在iframe内部,此时需要先切换到对应iframe再查询内部元素:
# 替换为实际的iframe选择器 iframe = page.frame_locator("iframe[属性='对应值']") print(await iframe.locator("#grvPedidos").inner_html())
内容的提问来源于stack exchange,提问作者TI CloudGed
相关产品推荐
相关产品推荐

