问题描述
我需要做一些自动化工作,以便在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 (将#修改为@)