仮想画面メソッドを使用すると、仮想画面上でブラウザを実行し、スクリーンショットを撮ることができるため、現在の画面の表示には影響しません。
特定の実装では、Xvfb ライブラリと pyvirtualdisplay ライブラリを使用できます。 Xvfb はメモリ上に仮想画面を作成する仮想 X11 サーバーであり、pyvirtualdisplay は Python コードから Xvfb の起動と制御を可能にする Python ライブラリです。
次は例です:
from pyvirtualdisplay import Display from selenium import webdriver # 启动虚拟屏幕 display = Display(visible=0, size=(800, 600)) display.start() # 创建浏览器实例并访问页面 browser = webdriver.Chrome() browser.get('https://www.google.com') # 截图并保存 browser.save_screenshot('screenshot.png') # 关闭浏览器和虚拟屏幕 browser.quit() display.stop()
この例では、最初に仮想画面を起動し、次に Chrome ブラウザ インスタンスを作成し、Google ホームページにアクセスします。次に、save_screenshot メソッドを使用してページのスクリーンショットを撮り、ローカル ファイルに保存します。最後にブラウザと仮想画面を閉じました。
仮想画面のサイズはブラウザ ウィンドウのサイズと同じである必要があることに注意してください。そうしないと、スクリーンショットが不完全になる可能性があります。コードでは、仮想画面のサイズを 800x600 として指定していますが、実際の状況に応じて変更できます。
Q&A
タスクが多すぎる場合、多くの仮想画面をアクティブにする必要があります。これにより多くのメモリが消費されますか?
はい、複数の仮想画面を開くと占有されます。たくさんの記憶。
スクリーンショットを撮るときにページがポップアップしないように、Xvfb (仮想 X11 ウィンドウ システム) を使用して画面をシミュレートすることを検討できます。以下は、Python に基づく Xvfb スクリーンショット コードの例です:
import os import time from selenium import webdriver from pyvirtualdisplay import Display from PIL import Image # 设置虚拟屏幕分辨率 display = Display(visible=0, size=(1920, 1080)) display.start() # 启动浏览器 browser = webdriver.Chrome() # 打开网页 browser.get('https://www.baidu.com') # 等待页面加载完成 time.sleep(5) # 截图 browser.save_screenshot('screenshot.png') # 退出浏览器 browser.quit() # 关闭虚拟屏幕 display.stop() # 打开截图 Image.open('screenshot.png').show()
この例では、pyvirtualdisplay ライブラリを使用して仮想画面を作成し、Chrome ブラウザと Selenium を使用して Web ページとスクリーンショットを開き、最後にPillow ライブラリを使用してスクリーンショットを開きます。このメソッドは Linux または macOS 環境で実行する必要があることに注意してください。
以上がPythonでSeleniumスクリーンショットを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。