Selenium使用headless Chrome

Headless chrome来了之后,再也不用使用虚拟display来运行Chrome了。

  1. 下载最近的Chrome webdriver
  2. 下载最新的Chromium

    1
    2
    3
    4
    5
    6
    7
    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:canonical-chromium-builds/stage
    sudo apt-get update
    sudo apt-get install chromium-browser
    # try it out
    chromium-browser --headless --no-sandbox http://example.org/
  3. 使用

  • 初始化

    1
    2
    3
    4
    5
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    # if using root
    options.add_argument('--no-sandbox')
    driver = webdriver.Chrome(chrome_driver_location, chrome_options=options)
  • open和close新的tab

    1
    2
    3
    4
    5
    6
    7
    8
    # open new tab
    driver.execute_script("window.open('');")
    # go to the new tab
    driver.switch_to.window(driver.window_handles[1])
    # close the tab
    driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w')
    # switch to the old tab
    driver.switch_to.window(driver.window_handles[0])
  1. Selenium notes
    • find_elements_by_css_selector可以用css selector选元素。
    • element.get_attribute拿attributes。比如href。用element.text取text。
    • 可以用driver.window_handles切换window