使用pytest+SeleniumBase运行测试报错:--variables参数冲突
解决argparse.ArgumentError: argument --variables: conflicting option string报错问题
这个报错的核心原因是SeleniumBase的BaseCase类自带argparse参数解析逻辑,你直接实例化测试类并调用方法的方式,和SeleniumBase的内置参数处理机制冲突了——--variables是SeleniumBase预设的命令行参数,重复注册就会触发这个错误。而单独用Selenium时没有这套参数逻辑,所以不会报错。
给你两个可行的解决办法:
方法一:遵循SeleniumBase标准运行流程
删掉代码里的if __name__ == "__main__"代码块,改用SeleniumBase支持的pytest命令行运行测试:
pytest 你的测试文件名.py -v
这种方式会让SeleniumBase正确处理内置参数,不会出现冲突。
方法二:改用SeleniumBase的Driver类混用功能
如果一定要同时用原生Selenium风格和SeleniumBase的工具方法,直接用SeleniumBase提供的Driver类替代原生webdriver.Chrome(),这样既避免参数冲突,又能调用SeleniumBase的截图、断言等方法:
修改后的代码示例:
from seleniumbase import Driver def test_open_webpage(): # 用SeleniumBase Driver替代原生Chrome驱动 driver = Driver(browser="chrome") driver.get('https://test01.rubiscape.io/#/auth/login-user') # 使用SeleniumBase的断言方法,注意替换成页面实际标题 driver.assert_true("目标页面实际标题" in driver.title) # 执行截图操作 driver.check_window(name="Initial_Window") # 关闭驱动 driver.quit() if __name__ == "__main__": test_open_webpage()
另外提醒下:你原代码里断言的"Example Domain"和打开的页面不匹配,记得改成目标页面的实际标题,不然断言会失败。
内容的提问来源于stack exchange,提问作者user23840781
相关产品推荐
相关产品推荐

