“ModuleNotFoundError: No module named ‘selenium‘”报错如何解决

接上节:测试平台开发之测试框架改造并发执行及结果隔离(1)

上节博客的末尾提到:在命令窗口执行python main.py
可是执行的时候遇到了如下报错:

============================================================================ ERRORS ============================================================================
_____________________________________________________________ ERROR collecting tests/test_case.py ______________________________________________________________
ImportError while importing test module 'D:\cekai\xuexi\Tesla\fullstack_framework\tests\test_case.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
..\.venv\Lib\site-packages\_pytest\python.py:487: in importtestmodule
    mod = import_path(
..\.venv\Lib\site-packages\_pytest\pathlib.py:591: in import_path
    importlib.import_module(module_name)
D:\python\Lib\importlib\__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1387: in _gcd_import
    ???
<frozen importlib._bootstrap>:1360: in _find_and_load
    ???
<frozen importlib._bootstrap>:1331: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
..\.venv\Lib\site-packages\_pytest\assertion\rewrite.py:178: in exec_module
    exec(co, module.__dict__)
tests\test_case.py:10: in <module>
    from commons.case_util import load_case, run_case
commons\case_util.py:12: in <module>
    from commons import settings
commons\settings.py:7: in <module>
    from selenium.webdriver.common.by import By
E   ModuleNotFoundError: No module named 'selenium'
======================================================================= warnings summary ======================================================================= 
..\.venv\Lib\site-packages\_pytest\config\__init__.py:1448
  D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\_pytest\config\__init__.py:1448: PytestConfigWarning: Unknown config option: result_log_verbose

    self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")

..\.venv\Lib\site-packages\_pytest\config\__init__.py:1448
  D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\_pytest\config\__init__.py:1448: PytestConfigWarning: Unknown config option: xlsx_meta_column_name

    self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=================================================================== short test summary info ==================================================================== 
ERROR tests/test_case.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
================================================================= 2 warnings, 1 error in 0.48s ================================================================= 
'allure' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

在这里插入图片描述
那么针对这个报错,要如何解决呢?

1. 模块导入错误

报错信息显示 selenium 模块未找到。你需要确保 selenium 安装在你的虚拟环境中。你可以通过以下步骤来解决:

激活你的虚拟环境(假设你的虚拟环境路径是 D:\cekai\xuexi\Tesla.venv):

D:\cekai\xuexi\Tesla\.venv\Scripts\activate

在这里插入图片描述

2、安装 selenium 模块:

pip install selenium

在这里插入图片描述
如果继续遇到报错:

ERROR: Exception:
Traceback (most recent call last):
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 438, in _error_catcher
    yield
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 561, in read
    data = self._fp_read(amt) if not fp_closed else b""
           ^^^^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 527, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
           ^^^^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 98, in read
    data: bytes = self.__fp.read(amt)
                  ^^^^^^^^^^^^^^^^^^^
  File "D:\python\Lib\http\client.py", line 479, in read
    s = self.fp.read(amt)
        ^^^^^^^^^^^^^^^^^
  File "D:\python\Lib\socket.py", line 707, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\python\Lib\ssl.py", line 1253, in recv_into
    return self.read(nbytes, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\python\Lib\ssl.py", line 1105, in read
    return self._sslobj.read(len, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 180, in exc_logging_wrapper
             ^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 245, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\commands\install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 179, in resolve
    self.factory.preparer.prepare_linked_requirements_more(reqs)
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\operations\prepare.py", line 552, in prepare_linked_requirements_more
    self._complete_partial_requirements(
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\operations\prepare.py", line 467, in _complete_partial_requirements
    for link, (filepath, _) in batch_download:
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\network\download.py", line 183, in __call__
    for chunk in chunks:
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\cli\progress_bars.py", line 53, in _rich_progress_bar
    for chunk in iterable:
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 560, in read
    with self._error_catcher():
  File "D:\python\Lib\contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "D:\cekai\xuexi\Tesla\.venv\Lib\site-packages\pip\_vendor\urllib3\response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

两种方式解决:

1、使用国内的 PyPI 镜像源
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
2、设置超时
pip install selenium --timeout=120

3、验证 selenium 是否安装成功:

pip list

4、未知的配置选项警告

在 pytest.ini 文件中有两个未知的配置选项:result_log_verbose 和 xlsx_meta_column_name。这些选项不是 pytest 的标准配置选项,可能是由某些插件或自定义逻辑添加的。你可以通过以下步骤来解决:
1、检查 pytest.ini 文件:
打开 pytest.ini 文件并确认是否有以下内容:
在这里插入图片描述

5、allure 命令找不到

安装 allure 命令行工具:
你可以从 Allure2 官方 GitHub 下载适用于你系统的版本。
下载并解压后,将 bin 目录添加到系统的 PATH 环境变量中。

6、再次执行用例

 python main.py

可以看到用例运行成功
在这里插入图片描述

### 解决 Python 中 `No module named 'selenium'` 错误的方法 当遇到 `ModuleNotFoundError: No module named 'selenium'` 的错误提示时,这通常意味着 Selenium 库未被正确安装或者当前使用的 Python 环境无法识别已有的 Selenium 安装。以下是几种可能的原因以及对应的解决方案。 #### 验证并安装 Selenium 库 如果尚未安装 Selenium,则可以通过执行命令来完成安装操作,在这里建议使用 `-m` 参数指定 pip 运行于特定版本的 Python 下: ```bash python -m pip install selenium ``` 这条指令能够帮助确认所调用的是预期中的 Python 版本及其配套工具链[^2]。 #### 检查虚拟环境配置 对于那些在同一台机器上维护多个不同项目或依赖关系的人来说,可能会存在多套相互隔离的工作区——即所谓的“虚拟环境”。因此,务必保证正在工作的环境中确实包含了所需的第三方库;如果不是的话,应该激活正确的虚拟环境后再尝试重新导入模块。 #### 处理跨平台差异带来的影响 某些情况下,即使已经在系统的默认 shell 终端里成功完成了包管理器的操作,像 Anaconda Jupyter Notebook 或者 PyCharm IDE 内嵌式的解释器却依旧报告缺少相应资源的现象。这是因为它们各自拥有独立的一组设置选项与路径变量。针对这种情况,推荐的做法是在目标应用程序内部直接触发安装流程,比如利用 Conda 命令行客户端为整个发行版统一更新组件列表: ```bash conda install -c conda-forge selenium ``` 另外一种方法就是手动调整 `$PYTHONPATH` 环境变量以便让各个子进程共享相同的查找范围[^3]。 #### 排除代码逻辑层面的因素干扰 除了上述提到的技术性障碍外,偶尔也会因为程序本身的编写不当而引发类似的异常状况。例如给定的例子中指定了绝对文件位置作为参数传递给了 ChromeDriver 实例化函数,然而一旦脱离开发者的个人电脑便极有可能失效。所以最好采用相对路径形式或是借助其他机制动态获取可执行文件的确切地址[^4]。 ```python from selenium import webdriver import os driver_path = os.path.join(os.getcwd(), "chromedriver") # 动态构建 chromedriver 路径 driver = webdriver.Chrome(executable_path=driver_path) driver.get('https://www.baidu.com') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值