You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NODRIVER跨页面导航触发NoneType AttributeError问题求助

解决NODRIVER多页面导航时的AttributeError问题

问题场景

使用NODRIVER实现多页面导航:已成功访问网站首页,通过mouse_move触发下拉菜单,点击下拉项pay_per_visit进入第二页。尝试将点击后的结果存入test1并调用其find方法时,触发AttributeError: 'NoneType' object has no attribute 'find'错误。

错误原因

pay_per_visit.click()执行页面跳转后返回值为None,并非新页面的Page对象,直接用该值调用find方法必然报错。此外,代码注释掉了await driver.wait_for_navigation(),导致页面未完成跳转就执行后续查找操作,进一步加剧问题。

修复方案

  1. 点击跳转后必须等待页面导航完成,确保新页面加载完毕
  2. 使用当前活动标签页(driver.main_tab)执行新页面的元素查找,而非点击操作的返回值

修改后的核心代码片段

pay_per_visit = await page.find('/html/body/nav/div/ul/li[4]/div/div/div[2]/div/a')
await pay_per_visit.click()

# 等待页面导航完成,确保新页面加载完毕
await driver.wait_for_navigation()
print("Navigated to new page")

# 使用driver.main_tab获取当前活动标签页的Page对象,执行元素查找
swing = await driver.main_tab.find('/html/body/div[2]/div/div/ul/li[1]/div/a/span')

完整修复代码

import asyncio
import nodriver as uc
from time import sleep
url1 = 'https://www.mytpi.com/'

async def b_start_chrome_and_log_in():
    print("start chrome")

    driver = await uc.start()
    await driver.main_tab.maximize()

    page = await driver.get(url1)
    print("Website loaded")

    improve = await page.find('/html/body/nav/div/ul/li[4]/a')
    print("found drop down")

    sleep(10)
    await improve.mouse_move()
    print("hover worked")
    sleep(1)

    pay_per_visit = await page.find('/html/body/nav/div/ul/li[4]/div/div/div[2]/div/a')
    await pay_per_visit.click()

    # 等待导航完成,这一步必须保留
    await driver.wait_for_navigation()
    print("Navigated to new page")

    # 改用driver.main_tab查找新页面元素
    swing = await driver.main_tab.find('/html/body/div[2]/div/div/ul/li[1]/div/a/span')
    print("Found swing characteristics:", swing)

    await driver.close()

asyncio.run(b_start_chrome_and_log_in())

额外提示

  • 避免使用硬编码XPath,尽量改用class、id等更稳定的选择器,防止页面结构变动导致定位失败
  • 优先用asyncio.sleep()替代time.sleep(),避免阻塞事件循环

内容的提问来源于stack exchange,提问作者steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:47:34