หากคุณกำลังใช้เว็บไดรเวอร์ Selenium กับ Python คุณสามารถใช้ PyVirtualDisplay ซึ่งเป็น Python wrapper สำหรับ Xvfb และ Xephyr
PyVirtualDisplay ต้องการ Xvfb เป็นการพึ่งพา บน Ubuntu ให้ติดตั้ง Xvfb ก่อน:
sudo apt-get install xvfb
จากนั้นติดตั้ง PyVirtualDisplay จาก Pypi:
pip install pyvirtualdisplay
ตัวอย่างสคริปต์ Selenium ใน Python ในโหมด headless ด้วย PyVirtualDisplay:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
แก้ไข
คำตอบเริ่มต้นถูกโพสต์ในปี 2014 และตอนนี้เราอยู่ที่จุดเริ่มต้นของปี 2018 เช่นเดียวกับทุกอย่างเบราว์เซอร์ก็มีความก้าวหน้าเช่นกัน Chrome มีรุ่นหัวขาดสมบูรณ์ซึ่งไม่จำเป็นต้องใช้ไลบรารีบุคคลที่สามใด ๆ เพื่อซ่อนหน้าต่าง UI โค้ดตัวอย่างมีดังนี้:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
CHROME_PATH = '/usr/bin/google-chrome'
CHROMEDRIVER_PATH = '/usr/bin/chromedriver'
WINDOW_SIZE = "1920,1080"
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,
chrome_options=chrome_options
)
driver.get("https://www.google.com")
driver.get_screenshot_as_file("capture.png")
driver.close()
driver = webdriver.Firefox()
ในรหัสของคุณทำตามคำตอบของฉันที่นี่: stackoverflow.com/a/23898148/1515819