使用Python+Selenium测试Electron应用时如何引入electron二进制文件
你当前代码存在的核心问题是同时在options和DesiredCapabilities中配置了两个不同的二进制文件路径,启动时Selenium会优先调用capabilities中配置的electron空壳,没有加载你的实际应用代码,所以出现i18n失效的问题。
正确配置方式
新版本Selenium(v3.14及以上)仅需通过options.binary_location配置二进制路径即可,不需要额外在capabilities中重复设置,避免路径冲突。
场景1:测试已打包的exe应用
直接保留你的exe路径配置,删除capabilities相关的binary配置即可,参考代码:
import time from selenium import webdriver as app from selenium.webdriver.chrome.options import Options options = Options() # 配置为打包好的应用exe路径 options.binary_location = "C:/Users/eeee/AppData/Local/Programs/folder/app.exe" # 不需要传入desired_capabilities参数,避免冲突 driver = app.Chrome(options=options) time.sleep(5) driver.quit()
场景2:测试开发环境未打包的应用
如果需要在开发阶段测试,指定electron路径的同时,需要添加参数传入应用入口目录,参考代码:
import time import os from selenium import webdriver as app from selenium.webdriver.chrome.options import Options # 可选:提前设置工作目录,避免i18n资源文件加载失败 os.chdir("你的应用项目根目录路径(package.json所在目录)") options = Options() # 配置为electron二进制路径 options.binary_location = "./node_modules/.bin/electron" # 传入应用根目录作为启动参数,electron会自动加载入口文件 options.add_argument("你的应用根目录路径") driver = app.Chrome(options=options) time.sleep(5) driver.quit()
额外排查点
如果修改配置后i18n仍然失效,可以检查:
- 应用的i18n资源文件是否使用了相对路径,Selenium启动时的工作目录和手动启动是否一致
- 打包后的应用是否将i18n资源文件正确打包进了exe目录
内容的提问来源于stack exchange,提问作者chasethesunnn
相关产品推荐
相关产品推荐

