RobotFramework+SeleniumLibrary:浏览器启动但无法跳转指定URL求助
RobotFramework 结合 SeleniumLibrary 启动 Chrome 失败问题排查
环境配置
- IDE:Pycharm
- Python 版本:3.7.5
- Robot Framework 版本:3.1.2
- Selenium 版本:3.141.0
- 已安装相关依赖包及 Intellibot 插件
- Chrome 浏览器版本:112.0.5615.121,匹配的 ChromeDriver(112.0.5615.49)存放于 Python37 的 Scripts 文件夹,路径已加入系统环境变量
- 操作环境:客户远程桌面
初始代码及问题表现
初始测试代码:
*** Settings *** Library SeleniumLibrary *** Test Cases *** Testcase name: Launch and Navigate: open browser www.google.com chrome
运行后 Chrome 启动,但地址栏显示data:,并停滞;关闭浏览器后终端报错:
WebDriverException: Message: unknown error: Chrome failed to start: exited normally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location C:\Program Files (x86)\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
尝试过的代码
*** Settings *** Library SeleniumLibrary *** Variables *** ${url} https://www.google.com ${driver_path} C:/Program Files/Python37/Scripts/chromedriver *** Test Cases *** TC_01Launch ${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver Call Method ${chrome_options} add_argument --no-sandbox Create Webdriver Chrome executable_path=${driver_path} Open Browser ${url} chrome options=${chrome_options}
问题分析与解决方案
这个问题属于远程桌面环境下 Chrome 启动的配置+代码逻辑混合问题,可通过以下方式解决:
核心原因
远程桌面环境中,Chrome 默认启动逻辑会因会话权限、图形界面限制等导致 DevToolsActivePort 文件无法生成,被 ChromeDriver 判定为浏览器崩溃;同时你尝试的代码中存在重复初始化浏览器实例的冲突。
具体解决步骤
修正代码逻辑并补充必要启动参数
去掉重复的Create Webdriver调用,添加适配远程桌面的 Chrome 参数,简化后代码如下:*** Settings *** Library SeleniumLibrary *** Variables *** ${url} https://www.google.com *** Test Cases *** TC_01_Launch_Chrome_To_Google # 初始化Chrome配置对象 ${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver # 添加远程桌面必备参数 Call Method ${chrome_options} add_argument --no-sandbox Call Method ${chrome_options} add_argument --disable-dev-shm-usage Call Method ${chrome_options} add_argument --remote-debugging-port=9222 # 若远程桌面无可视化界面,需添加无头模式参数(Selenium3用--headless,Selenium4+用--headless=new) # Call Method ${chrome_options} add_argument --headless # 启动浏览器并打开目标地址 Open Browser ${url} chrome options=${chrome_options} # 可选:验证页面加载完成 Wait Until Page Contains Google Close Browser环境配置验证
- 执行
chromedriver --version验证 ChromeDriver 是否能被系统正常调用 - 确认当前用户对 Chrome 安装目录、Python Scripts 文件夹有读写权限
- 执行
关键注意点
- 不要同时使用
Create Webdriver和Open Browser,二者都是初始化浏览器实例,重复调用会导致冲突 - 若远程桌面是无图形化环境,必须启用无头模式参数,否则浏览器无法启动
- 不要同时使用
内容的提问来源于stack exchange,提问作者Learn shibu
相关产品推荐
相关产品推荐

