Selenium Java设置Chrome语言参数翻译网页代码失效如何解决
问题产生原因
- 仅配置
--lang参数只会修改Chrome浏览器自身的UI语言,既不会修改网页请求的Accept-Language请求头,也不会触发Chrome的自动翻译功能。目标站点默认会根据请求头的语言优先级返回本地语言内容,自然无法达到自动翻译的效果。 - 未开启Chrome的内置翻译功能,也没有配置源语言到目标语言的自动翻译规则,浏览器不会自动触发翻译操作。
代码调整方案
调整后的完整代码如下,可实现打开目标站点后自动将挪威语内容翻译为简体中文:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import io.github.bonigarcia.wdm.WebDriverManager; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; public class AutoTranslateTest { public static void main(String[] args) { WebDriverManager.chromedriver().setup(); ChromeOptions option = new ChromeOptions(); option.addArguments("start-maximized"); option.addArguments("test-type"); // 配置浏览器语言、请求头语言为中文优先 option.addArguments("--lang=zh-CN"); Map<String, Object> prefs = new HashMap<>(); prefs.put("intl.accept_languages", "zh-CN,zh,en"); // 开启自动翻译,配置挪威语自动翻译为中文 prefs.put("translate.enabled", true); prefs.put("translate_forced_langs", "no,zh-CN"); prefs.put("translate_whitelists", "no:zh-CN"); option.setExperimentalOption("prefs", prefs); option.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); option.setExperimentalOption("useAutomationExtension", false); WebDriver driver = new ChromeDriver(option); driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS); driver.get("https://www.staffers.no/jobbsoker"); } }
调整说明
- 新增
intl.accept_languages偏好配置,修改网页请求的语言优先级,部分支持多语言的站点会直接返回对应语言的内容,无需翻译 - 新增翻译相关配置,强制开启Chrome内置翻译功能,指定源语言与目标语言的对应关系,无需手动点击翻译按钮即可自动完成翻译
- 如需翻译为其他语言,替换代码中对应的语言编码即可,比如英文对应
en-US,日文对应ja
内容的提问来源于stack exchange,提问作者The_QA_guy
相关产品推荐
相关产品推荐

