无需pytest调用SeleniumBase BaseCase类遇问题求助
问题解决:不依赖pytest使用SeleniumBase BaseCase + Ubuntu环境运行异常处理
一、不通过pytest直接使用BaseCase类的方法
要在普通Python脚本中继承BaseCase并调用其扩展方法(如choose_file),必须手动触发BaseCase的setUp()方法(pytest会自动执行该初始化步骤,手动调用时需显式执行),同时在操作结束后调用tearDown()清理资源。示例代码如下:
from seleniumbase import BaseCase class CustomTest(BaseCase): def __init__(self): super().__init__() # 手动初始化SeleniumBase核心变量 self.setUp() def execute_workflow(self): # 调用BaseCase的各类方法 self.open("https://seleniumbase.io/simple/login") self.type("#username", "demo_user") self.type("#password", "secret_pass") self.click('a:contains("Sign in")') # 示例:使用choose_file上传文件 self.choose_file("#file_input", "/path/to/your/local/file.pdf") # 其他业务操作... self.click_link("Sign out") self.assert_text("signed out", "#top_message") # 手动清理浏览器等资源 self.tearDown() if __name__ == "__main__": test_instance = CustomTest() test_instance.execute_workflow()
二、Ubuntu 22.04下SB上下文管理器运行异常的解决步骤
从日志来看,ChromeDriver已成功匹配版本,但脚本未继续执行,大概率是系统依赖缺失或显示环境问题,按以下步骤排查:
1. 安装Chrome必需的系统依赖
Ubuntu下运行Chrome需要基础库支持,执行以下命令安装:
sudo apt update sudo apt install -y libnss3 libxss1 libappindicator3-1 libasound2 libatk-bridge2.0-0 libgtk-3-0
2. 处理无桌面环境的显示问题
如果你的Ubuntu环境没有图形界面,需要通过xvfb模拟显示环境:
- 先安装xvfb:
sudo apt install xvfb
- 用xvfb包裹脚本运行:
xvfb-run python3 your_script.py
或者直接在代码中启用无头模式(无需图形界面):
with SB(headless=True) as sb: sb.open("https://seleniumbase.io/simple/login") # 后续操作...
3. 检查ChromeDriver权限
确保chromedriver拥有可执行权限:
chmod +x ~/mysimplecode/.venv/lib/python3.10/site-packages/seleniumbase/drivers/chromedriver
4. 升级SeleniumBase到最新版本
版本兼容问题也可能导致异常,执行升级命令:
pip install --upgrade seleniumbase
内容的提问来源于stack exchange,提问作者TomCat
相关产品推荐
相关产品推荐

