我可以将键盘连接到XVFB上运行的Selenium驱动程序吗?

问题描述

我需要做一些自动化工作,以便在Firefox上使用Selenium拍摄网站的完整截图。获取完整屏幕截图的唯一方法是将一些键盘输入发送到Firefox上的控制台。

我可以在本地计算机上执行此操作。但不在远程服务器上。

我可以以某种方式将虚拟键盘连接到虚拟显示器并使用它吗?

我正在使用的示例脚本-

# import webdriver 
from selenium import webdriver
from pynput.keyboard import Key,Controller as KeyboardController
from pynput.mouse import Button,Controller as MouseController
from time import sleep
import sqlite3
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from os import path

conn = sqlite3.connect("V:\\FreshRun\\webtracker.db")
cur = conn.cursor()
cur.execute("SELECT URL FROM WebsiteDetail where screenshot_taken_ptp_enabled = false AND screenshot_processed_ptp_enabled = false")
rows = cur.fetchall()

keyboard = KeyboardController()
mouse = MouseController()
fp = webdriver.FirefoxProfile()
fp.set_preference('browser.contentblocking.category','strict')
fp.set_preference('privacy.trackingprotection.enabled',True)
driver = webdriver.Firefox(fp)
list_of_websites = ["reddit.com"]

for row in rows:
    try:
        if(row[0] == "microsoftonline.com" or row[0] == "163.com" or row[0] == "bet365.com"):
            continue
        driver.get("http://"+row[0])
        sleep(5)
        driver.get("http://"+row[0])
        sleep(5)
        last_height = driver.execute_script("return window.scrollY || window.scrollTop || document.getElementsByTagName(\"html\")[0].scrollTop")
        while True:
        # Scroll down to bottom
        #driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
        # Wait to load page
            driver.find_element_by_tag_name("html").send_keys(Keys.PAGE_DOWN)
            sleep(1)
        # Calculate new scroll height and compare with last scroll height
            new_height = driver.execute_script("return window.scrollY || window.scrollTop || document.getElementsByTagName(\"html\")[0].scrollTop")
            if new_height == last_height or new_height >= 10000:
                break
            last_height = new_height
        keyboard.press(Key.ctrl)
        keyboard.press(Key.shift)
        keyboard.press('k')
        keyboard.release('k')
        keyboard.release(Key.shift)
        keyboard.release(Key.ctrl)
        sleep(1)
        keyboard.type(":screenshot --fullpage --filename \"V:\\FreshRun\\screenshots_ptp_enabled\\"+row[0]+"_1.png\"")
        keyboard.press(Key.enter)
        keyboard.release(Key.enter)
        sleep(7)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)