Selenium启动Chrome需先手动运行?Amtrak自动化异常求助
Selenium启动全新Chrome访问Amtrak官网报错的问题
在Crostini/Linux环境下使用Selenium+Chrome访问Amtrak官网(https://www.amtrak.com/tickets/departure.html)查询票价时,手动启动Chrome操作完全正常,但Selenium启动的全新Chrome实例会抛出“unknown error”。调试后确认,错误根源是页面JavaScript解析sessionStorage时,找不到预期的JSON数据。
测试复现步骤
- 手动启动Chrome,访问
https://www.amtrak.com/tickets/departure.html - 点击“New Search”
- 出发地输入“PDX”
- 目的地输入“JAX”
- 选择出发日期:4/2/23
- 其余选项保持默认
- 点击“FIND TRAINS”
错误场景:使用全新用户数据目录
直接用以下代码启动全新Chrome实例,手动执行上述查询步骤会报错:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_experimental_option("detach", True) driver = webdriver.Chrome(options=chrome_options) driver.get("https://amtrak.com/tickets/departure.html")
这种方式会自动生成随机的全新用户数据目录,导致查询失败。
可行场景:复用预配置的用户目录
先手动完成以下操作:
- 运行命令:
chrome --user-data-dir=/home/robinson/.config/google-chrome --profile-directory=selenium,进入访客模式完成一次查询; - 再用相同参数通过Selenium启动Chrome,代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_experimental_option("detach", True) chrome_options.add_argument("user-data-dir=/home/robinson/.config/google-chrome") chrome_options.add_argument('--profile-directory=selenium') driver = webdriver.Chrome(options=chrome_options) driver.get("https://amtrak.com/tickets/departure.html")
此时查询可正常运行。
疑问
已尝试--incognito、--enable-javascript等参数,均无法解决问题。想知道:
- 为什么全新用户数据目录下无法正常运行?
- 是否有对应的Selenium参数可以直接解决该问题,无需提前手动配置用户目录?
内容的提问来源于stack exchange,提问作者David Robinson
相关产品推荐
相关产品推荐

