如何在VSCode终端通过命令行运行Python Selenium登录脚本
如何在VSCode终端运行带参数的Selenium登录Python脚本
脚本无法正常执行的核心原因有两个:一是代码里sys.argv索引使用错误,二是如果使用unittest/pytest类测试框架,默认会读取命令行参数,和你自定义的登录参数产生冲突。
第一步:修正代码问题
sys.argv的固定索引规则是:sys.argv[0]永远代表当前运行的脚本自身文件名,你需要传入的URL、用户名、密码要从索引1开始依次读取。
补全依赖导入、驱动初始化、框架参数兼容后的可运行代码如下:
import sys import time from selenium import webdriver from selenium.webdriver.common.by import By import unittest class LoginTest(unittest.TestCase): def setUp(self): # 初始化Chrome驱动,运行前请确认已配置好对应版本的ChromeDriver环境变量 self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) def test_login(self): # 修正参数索引:参数顺序对应 脚本名 登录页URL 用户名 密码 target_url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] self.driver.get(target_url) print("浏览器启动成功") self.driver.find_element(By.NAME, "username").send_keys(username) self.driver.find_element(By.CLASS_NAME, "btn-login-submit").click() time.sleep(7) self.driver.find_element(By.NAME, "password").send_keys(password) self.driver.find_element(By.CLASS_NAME, "btn-login-submit").click() time.sleep(10) print("登录成功") def tearDown(self): self.driver.quit() if __name__ == "__main__": # 屏蔽unittest对自定义命令行参数的读取,避免参数冲突报错 unittest.main(argv=sys.argv[:1])
如果你不使用unittest框架,只是写普通线性脚本,可以去掉测试类结构,直接编写流程代码,不需要额外处理参数冲突,只要修正argv索引即可。
第二步:VSCode终端执行命令
打开VSCode内置终端,先通过cd命令切换到脚本所在的文件夹,然后按照下面的格式输入运行命令:
# 命令格式:python 脚本文件名 登录页URL 用户名 密码 python login_test.py https://你的登录页面地址 你的登录账号 你的登录密码
实际运行示例:
python login_test.py https://mail.qq.com my_qq_account@qq.com my_mail_password
常见报错排查
- 如果提示
python不是内部或外部命令:Windows环境把python换成py,Mac/Linux环境换成python3即可 - 如果提示找不到selenium模块:先在终端执行
pip install selenium安装对应依赖 - 如果提示浏览器驱动找不到:下载和你本地浏览器大版本匹配的驱动,放到Python安装目录或者配置到系统环境变量路径下
- 传参时不要缺漏参数,三个参数的顺序必须和代码读取顺序一致,不能随意调换
内容的提问来源于stack exchange,提问作者DEEPIKA S
相关产品推荐
相关产品推荐

