Selenium Chrome webdriver本地正常但Heroku部署后超时失败如何解决?
问题解决方案
- 补充Chrome无头模式在Linux服务器的必要启动参数
你当前只配置了基础的无头和窗口参数,Heroku容器环境下运行Chrome必须额外添加3个参数:--no-sandbox关闭沙箱安全机制(容器环境无root权限运行Chrome必须开启)、--disable-dev-shm-usage禁用/dev/shm临时文件(Heroku分配的共享内存空间极小,不关闭会导致页面渲染崩溃)、--disable-gpu禁用GPU加速(服务器无图形环境下减少异常)。 - 优化元素定位与点击逻辑
你当前使用的全路径XPATH兼容性极差,只要页面DOM结构有细微调整就会定位失败,建议替换为相对XPATH、类名或ID定位;另外服务器环境下WebDriver的原生click经常因为视口、元素遮挡问题触发失败,可改为JS执行点击,兼容性更强。 - 确认Chrome与Chromedriver版本匹配
你本地使用的Chromedriver版本为94,需要确认Heroku上安装的Chrome浏览器版本是否同样为94:如果使用的是官方heroku-buildpack-google-chrome构建包,默认会安装最新稳定版,若近期自动升级了版本,和你代码里的v94 Chromedriver不匹配就会出现元素识别异常,你可以锁定构建包的Chrome版本和本地保持一致。
修正后代码示例
def __driver_setup(url): driver_path = './chromedriver' os.chmod(driver_path, 0o755) options = webdriver.ChromeOptions() # 原有基础配置 options.add_argument("--headless") options.add_argument("window-size=1920,1080") # 新增Heroku环境必要参数 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-gpu") # 可选添加参数:避免被目标网站识别为爬虫 options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36") driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options) driver.get(url) delay = 40 try: WebDriverWait(driver, delay).until(EC.presence_of_element_located( (By.CLASS_NAME, 'btn-lookup'))) except TimeoutException: print('Timed out on profile list...') try: # 先定位元素,再用JS点击规避原生点击的兼容问题 target_btn = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.XPATH, '//*[@id="blur-container"]//ul/li[1]/a'))) driver.execute_script("arguments[0].click();", target_btn) except TimeoutException: print('Timed out on company details button click...') return None try: WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.XPATH, '//*[@id="blur-container"]//div[1]/div[2]/a'))) return driver.page_source except TimeoutException: print('Timed out on company details loading...') return None
内容的提问来源于stack exchange,提问作者Rian Zaman
相关产品推荐
相关产品推荐

