You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium WebDriver测试在Linux服务器加载移动端页面问题求助

解决ChromeDriver在Linux服务器上加载移动端网页的问题

我之前在CI服务器上跑Selenium测试时也遇到过完全一样的坑!本地运行一切正常,到了Linux服务器上就自动切到移动端布局,元素全错位找不到。以下是我亲测有效的解决办法:

核心原因

Linux服务器上默认启动的ChromeDriver窗口尺寸非常小(大概默认是800x600),你的网页通过响应式布局识别为移动设备,自动加载了移动端版本,导致测试依赖的桌面端元素无法定位。

具体解决方案

1. 显式设置Chrome窗口尺寸

这是最直接有效的办法,启动Chrome时强制指定一个桌面级的窗口大小,比如1920x1080:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 服务器通常用headless模式,必须加上这两行参数避免启动失败
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--no-sandbox")
# 关键:设置固定桌面级窗口尺寸
chrome_options.add_argument("--window-size=1920,1080")

driver = webdriver.Chrome(options=chrome_options)

注意:不要只依赖driver.maximize_window(),在headless模式下这个方法经常不生效,显式设置尺寸更可靠。

2. 强制设置桌面端User-Agent(可选补充)

如果设置窗口尺寸后还是有问题,可以手动指定桌面Chrome的UA,避免网站通过UA识别为移动设备:

chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

3. 验证窗口尺寸是否生效

可以在测试代码里加一行打印,确认窗口尺寸是否正确设置:

print(driver.get_window_size())

如果输出是{'width': 1920, 'height': 1080},说明设置成功了。

额外提示

  • 如果你用的是其他语言(比如Java、C#),对应的ChromeOptions设置逻辑是一样的,只是语法不同,核心都是添加--window-size参数。
  • 服务器上运行时记得给ChromeDriver足够的权限,--no-sandbox参数在Linux环境下几乎是必须的,否则可能启动失败。

内容的提问来源于stack exchange,提问作者user964503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:27:41