0

我必须打印从产品信息页面链接到所有的HTML页面: http://prod.adv-bio.com/ProductDetail.aspx?ProdNo=1197无头浏览器导航页,点击链接的页面,然后printToPDF

我已经建立了一个测试脚本,看看我能做到这只是其中一个html文件。我使用了PyChromeDevTools和Selenium,希望我可以在DevTools中使用printToPDF函数,同时使用Selenium单击我需要单击的链接。

这里是我的代码至今:

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) 

,我得到这个错误

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) 

我已经更新chromedriver至2.31,并有镀铬版60,我应该使用金丝雀?我很感激这方面的帮助。

回答

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) 

在这里工作! (铬60 + Chromedriver 2.31)希望这有助于!

+0

我刚刚尝试编辑我发布的代码以使用这些选项,但现在出现错误。您是否可以将文件打印到pdf?您介意发布您使用的其他代码吗?我开始认为这是我的代理的问题,或者PyChromeDevTools和Selenium使用相同的端口,无法一起运行。 – Condav

+0

尝试在代码中注释这两行:'chrome_options.add_argument(' - remote-debugging-port = 9222') chrome_options.add_argument(' - disable-gpu')' – user3196587

+0

不幸的是,解决我的问题。我将尝试在我的个人计算机上复制此内容,并排除我的工作防火墙是否妨碍了您的工作。我能够得到这个与FireFox的工作,但防火墙迫使我登录每个循环(IT强烈鼓励IE,但我敢打赌,他们都没有使用它...)我会在完成后发布我的问题/感激。 – Condav