如何使用 Selenium 在 Chrome Headless 中启用自动翻译?

How to enable auto translating in Chrome headless with Selenium?

提问人:Sandy 提问时间:9/7/2023 更新时间:9/7/2023 访问量:48

问:

我正在将 Google Chrome 114 与 python 3.8 和 selenium v. 4.0.0 一起使用到 Ubuntu Server 机器上。

这是我的代码,运行良好

class Chrome:
    def __init__(self):
        self.s = ChromeService(DRIVER_PATH, log_path=GECKO_LOG_PATH)

        self.chrome_options = Options()

        self.chrome_options.add_argument("--headless")
        self.chrome_options.add_argument("start-maximized")
        self.chrome_options.add_argument("disable-infobars")
        self.chrome_options.add_experimental_option(
            "excludeSwitches",
            [
            'enable-automation',
            'disable-default-apps',
            'disable-translate'
            ]
        )
        self.chrome_options.add_argument("--disable-extensions")
        self.chrome_options.add_argument("--window-size=1920,1080")

        self.chrome_options.add_argument("--lang=en")

        prefs = {
          "translate_whitelists": {
            "en":"es",
            "jp":"es",
          },
          "translate":{"enabled":"true"},
        }
        self.chrome_options.add_experimental_option("prefs", prefs)

由于我无法在没有桌面环境的情况下在 ubuntu 服务器上使用它,因此我必须以无头模式启动 chrome,但没有自动翻译功能。

我的问题是:

  1. 如何在无头模式下启用自动翻译?
  2. 否则,有没有办法在没有桌面环境的情况下以头部模式运行 Chrome?

谢谢。

python-3.x google-chrome selenium-webdriver selenium-chromedriver

评论


答:

2赞 Michael Mintz 9/7/2023 #1

您可以使用虚拟显示器在无头显示器上以有头模式运行 selenium,这应该可以解决您的问题。

Python 虚拟显示有两个常用的库:

下面是一个使用示例:sbvirtualdisplay

from sbvirtualdisplay import Display

display = Display(visible=0, size=(1440, 1880))
display.start()

# Run browser tests in a headless environment

display.stop()

如果要确保显示已停止,即使脚本在结束前失败,也请使用上下文管理器格式:

with Display(visible=0, size=(1440, 1880)):
    # Run browser tests in a headless environment
    ...

评论

1赞 Sandy 9/11/2023
谢谢!即使翻译并不总是有效,它也能工作