使用Selenium+Python对Electron Vue.js应用做E2E测试无法启动求助
问题排查及修复方案
1. 核心版本匹配问题
- 必须保证ChromeDriver版本与Electron内置Chromium版本完全一致:
- 进入项目根目录执行命令
npx electron -v获取当前使用的Electron版本 - 匹配对应Chromium版本后下载对应ChromeDriver,不要直接使用最新版ChromeDriver
- 进入项目根目录执行命令
2. 现有代码逻辑错误修复
现有代码存在两个核心逻辑问题:
- 同时初始化了普通Chrome浏览器实例和Electron远程实例,后续操作完全没有用到连接Electron的实例
chromeOptions配置错误,指定的binary路径是npm启动脚本而非Electron可执行文件,也没有传入应用入口参数
3. 修正后的代码示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 配置Chrome选项 chrome_options = Options() # 这里填Electron可执行文件的实际路径,不是.bin下的启动脚本 chrome_options.binary_location = r"C:\Users\ddd\source\repos\vueselenium\new-app\node_modules\electron\dist\electron.exe" # 传入你的项目根目录作为Electron启动参数 chrome_options.add_argument(r"C:\Users\ddd\source\repos\vueselenium\new-app") # 关闭沙箱(Windows环境下必要参数) chrome_options.add_argument("--no-sandbox") # 直接初始化webdriver,不需要单独起远程连接 driver = webdriver.Chrome( executable_path=r'C:/Users/ddd/Downloads/chromedriver_win32/chromedriver.exe', options=chrome_options ) # 后续操作 print("Page Title is : %s" % driver.title) driver.maximize_window() print(driver.title) driver.quit()
4. 可选:先启动应用再连接的方案
如果你习惯先手动启动Electron应用再连接,可以先修改应用启动配置,开启远程调试端口:
- 在
package.json的electron:serve对应的启动命令后加--remote-debugging-port=9515 - 执行
npm run electron:serve启动应用后,再运行简化版的连接代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.debugger_address = "localhost:9515" driver = webdriver.Chrome( executable_path=r'C:/Users/ddd/Downloads/chromedriver_win32/chromedriver.exe', options=chrome_options ) print(driver.title)
内容的提问来源于stack exchange,提问作者Chaitanya Kota
相关产品推荐
相关产品推荐

