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

使用Selenium等待页面出现2个元素时触发TypeError错误求助

解决Python Selenium等待指定数量元素出现的报错问题

错误原因

你代码报错的核心问题是:WebDriverWait.until()方法会自动将driver传入你定义的lambda表达式,执行后返回布尔值,但你在后面额外加了(driver),相当于试图调用这个布尔值,因此触发TypeError: 'bool' object is not callable。

修复后的代码

直接移除末尾的(driver)即可:

def test_another_document_creation(self, WebDriverFixture):
    driver = WebDriverFixture
    page = MainPage(driver)
    page.new_document_create()
    page.upload_file(os.getenv("AGREEMENT_FILE_PATH"))

    # 移除末尾的(driver)
    WebDriverWait(driver, 20).until(lambda browser: len(browser.find_elements(*MainPageLocators.PAGE_ONE)) == 2)

更易维护的写法(可选)

如果需要在多个地方复用“等待N个元素出现”的逻辑,可以自定义一个可复用的断言函数,提升代码可读性:

def wait_for_n_elements(locator, target_count):
    def predicate(driver):
        elements = driver.find_elements(*locator)
        return len(elements) == target_count
    return predicate

# 测试用例中调用
def test_another_document_creation(self, WebDriverFixture):
    driver = WebDriverFixture
    page = MainPage(driver)
    page.new_document_create()
    page.upload_file(os.getenv("AGREEMENT_FILE_PATH"))

    WebDriverWait(driver, 20).until(wait_for_n_elements(MainPageLocators.PAGE_ONE, 2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:56:06