【问题标题】:Is there a way to hide the browser while running selenium in Python?有没有办法在 Python 中运行 selenium 时隐藏浏览器?
【发布时间】:2020-06-17 22:36:01
【问题描述】:

我正在使用 selenium 来抓取数据的项目,但我不希望浏览器打开并弹出。我只是想隐藏浏览器,也不想在任务栏中显示它......

有些人还建议使用 phantomJS,但我没有得到它们。现在该怎么办...

【问题讨论】:

标签: python python-3.x selenium selenium-webdriver


【解决方案1】:

如果您使用的是 Chrome,您可以像这样设置 headless 参数:

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

driver_exe = 'chromedriver'
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(driver_exe, options=options)

【讨论】:

    【解决方案2】:

    要在使用Selenium 执行测试时隐藏浏览器,您可以使用minimize_window() 方法,该方法最终将Chrome 浏览上下文 有效地最小化/推送到后台,使用以下命令解决方案:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument("--start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://www.google.co.in')
    driver.minimize_window()
    

    另类

    作为替代方案,您可以使用 headless 属性来配置 ChromeDriver 以使用 SeleniumHeadless 模式下启动 浏览器,您可以找到几个相关的讨论:

    【讨论】:

    • 它并没有隐藏窗口...它只是最小化它。
    • @AndrewWhiteman 仍然可以满足您...隐藏浏览器...的目的,但是我已经更新了答案,让我知道状态。
    • @Abhaysalvi:“它只是将它最小化”。是的,这正是我想要的。这样,浏览器窗口在打开时不会打扰我,但我仍然可以在需要时访问它。
    【解决方案3】:

    对于 chrome,您可以传入 --headless 参数。

    或者,您可以让 selenium 在这样的虚拟显示器上工作:

    from selenium import webdriver
    from xvfbwrapper import Xvfb
    
    display = Xvfb()
    display.start()
    
    driver = webdriver.Chrome()
    driver.get('http://www.stackoverflow.com')
    
    print(driver.title)
    driver.quit()
    
    display.stop()
    

    后者对我很有效。

    【讨论】:

      【解决方案4】:

      如果您使用的是 Firefox,请尝试以下操作:

      from selenium import webdriver
      from selenium.webdriver.firefox.options import Options
      
      driver_exe = 'path/to/firefoxdriver'
      options = Options()
      options.add_argument("--headless")
      driver = webdriver.Firefox(driver_exe, options=options)
      

      类似于@Meshi 在 Chrome 中的回答

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 2021-04-27
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多