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

如何将WebDriver传递到导入测试?代码报错原因排查

问题原因与解决方案

错误根源

你遇到的AttributeError是因为测试实例不共享:
你在main_tests.py的test_00_02_imported_tests里手动创建了ImportTestSet实例并调用set_driver传递了driver,但unittest.TestLoader().loadTestsFromModule(import_test_set)会重新创建ImportTestSet的全新实例来执行测试——这个新实例从未调用过set_driver,自然没有driver属性。

解决方案

方案一:通过类属性传递Driver(推荐)

修改import_test_set.py,将driver定义为类级属性,让所有测试实例共享:

import unittest
from selenium.webdriver.common.by import By

class ImportTestSet(unittest.TestCase):
    driver = None  # 定义类级别的driver变量
    @classmethod
    def setUpClass(cls):
        cls.i_wait = 5

    def test_00_02_01_enter(self):
        print('test_00_02_01_enter')

        self.driver.implicitly_wait(self.i_wait)
        # 注意:谷歌首页实际是"Sign in"(英文)或"登录"(中文),"Log in"会找不到元素,需对应修改
        a_enter = self.driver.find_element(By.LINK_TEXT, 'Sign in')
        a_enter.click()
        page_title = self.driver.title
        self.assertEqual(page_title, 'Google')
   
    def runTest(self):
        pass

然后修改main_tests.py的test_00_02_imported_tests,直接给类绑定driver:

def test_00_02_imported_tests(self):
    print('test_00_02_imported_tests')

    # 直接给ImportTestSet类设置driver
    import_test_set.ImportTestSet.driver = self.driver
    suite = unittest.TestLoader().loadTestsFromModule(import_test_set)

    result = unittest.TextTestRunner(verbosity=2).run(suite)
    self.assertEqual(result.failures, [])

方案二:手动创建测试实例并注入Driver

如果不想修改导入的测试类,可在main_tests.py里手动创建测试用例实例,确保使用同一个注入了driver的实例:

def test_00_02_imported_tests(self):
    print('test_00_02_imported_tests')

    # 手动创建测试用例实例,注入driver后加入测试套件
    test_case = import_test_set.ImportTestSet('test_00_02_01_enter')
    test_case.set_driver(self.driver)
    suite = unittest.TestSuite([test_case])

    result = unittest.TextTestRunner(verbosity=2).run(suite)
    self.assertEqual(result.failures, [])

额外提示

谷歌首页的登录链接文本不是Log in,英文环境是Sign in,中文环境是登录,你需要根据实际页面修改By.LINK_TEXT的参数,否则会触发NoSuchElementException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:23:16