0

PrintToPDF Je dois imprimer toutes les pages html liées à partir d'une page d'information produit: http://prod.adv-bio.com/ProductDetail.aspx?ProdNo=1197Headless Chrome Accédez à la page, cliquez sur la page liée, puis

J'ai mis en place un script de test pour voir si je pouvais faire ceci pour juste un des fichiers html. J'ai utilisé PyChromeDevTools et Selenium, espérant pouvoir utiliser la fonction printToPDF dans DevTools, tout en utilisant Selenium pour cliquer sur les liens que je dois cliquer.

Voici le code que j'ai jusqu'à présent:

import requests 
import time 
import re 
import websocket 
import PyChromeDevTools 
from bs4 import BeautifulSoup 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 
from selenium.webdriver.common.by import By 
from selenium.webdriver.chrome.options import Options 


chrome_options = Options() 
chrome_options.add_argument('--headless') 
chrome_options.add_argument('--remote-debugging-port=9222') 
chrome_options.add_argument('--window-size=1200x600') 
chrome_options.add_argument('--disable-gpu') 




driver = webdriver.Chrome('C:\\Users\\me\\AppData\\Local\\Programs\\Python\\Python36- 32\\selenium\\webdriver\\chromedriver_win32\\chromedriver.exe',   chrome_options = chrome_options) 
driver.get("http://prod.adv-bio.com/ProductDetail.aspx?ProdNo=1197") 

browser = PyChromeDevTools.ChromeInterface() 
browser.Network.enable() 
browser.Page.enable() 
driver.implicitly_wait(20)                 



driver.get("http://prod.adv-bio.com/ProductDetail.aspx?ProdNo=1197") 
time.sleep(3) 
url = driver.find_element_by_partial_link_text("Continuing") 
time.sleep(3) 
ActionChains(driver).click(url).perform() 
time.sleep(3) 


Page.printToPDF() 

time.sleep(5) 

et je reçois cette erreur

Traceback (most recent call last): 
    File "C:\Users\me\SOtestfile.py", line 29, in <module> 
    driver = webdriver.Chrome('C:\\Python27\\Lib\\site- 
packages\\chromedriver_win32\\chromedriver.exe', chrome_options = 
chromeOptions, desired_capabilities=capabilities) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__ 
desired_capabilities=desired_capabilities) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__ 
    self.start_session(desired_capabilities, browser_profile) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session 
    response = self.execute(Command.NEW_SESSION, parameters) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 256, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
WebDriverException: Message: chrome not reachable 
    (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 6.1.7601 SP1 x86_64) 

J'ai mis à jour chromedriver à 2,31 et avoir la version chrome 60, devrais-je utiliser canari ? J'apprécie toute aide à ce sujet.

Répondre

0
from selenium.webdriver.common.desired_capabilities import 
DesiredCapabilities  

chromeOptions = webdriver.ChromeOptions() 
chromeOptions.add_argument("headless") 
chromeOptions.add_argument("window-size=1366,768") 

capabilities = DesiredCapabilities.CHROME.copy() 
capabilities["browserName"] = "chrome" 

driver = webdriver.Chrome(chrome_options=chromeOptions, 
desired_capabilities=capabilities) 

Travaillé ici !! (Chrome 60 + Chromedriver 2.31) J'espère que cela aide !!

+0

J'ai juste essayé de modifier le code que j'ai posté pour utiliser ces options, mais maintenant obtenir une erreur. Avez-vous pu imprimer le fichier en pdf? Pourriez-vous poster le reste du code que vous avez utilisé? Je commence à penser que c'est un problème avec mon proxy, ou que PyChromeDevTools et Selenium utilisent le même port et ne peuvent pas être exécutés ensemble. – Condav

+0

Essayez de commenter ces deux lignes dans votre code: 'chrome_options.add_argument ('- remote-debugging-port = 9222') chrome_options.add_argument ('- disable-gpu')' – user3196587

+0

Malheureusement, commenter ceux-là n'a pas résoudre mon problème. Je vais essayer de reproduire ceci sur mon ordinateur personnel et exclure si mon pare-feu de travail entrave. J'ai réussi à faire fonctionner FireFox, mais le pare-feu m'oblige à me connecter à chaque boucle (IT encourage fortement IE mais je parie qu'aucun d'entre eux ne l'utilise ...) Je posterai mes questions/gratitude une fois terminé. – Condav