Python Selenium Headless Chrome [duplicato]

Dec 11 2020

Sto cercando di far funzionare Chrome senza testa e non riesco a farlo funzionare. Ho creato un file di prova che funziona:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe" , chrome_options=options)
driver.get('http://www.google.com')
print(driver.title)

funziona ma produce anche un errore:

C:/Users/kgood/PycharmProjects/pythonProject1/Unknown.py:6: DeprecationWarning: use options instead of chrome_options
  driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe" , chrome_options=options)

Posso convivere con l'errore suppongo perché si apre senza testa, ottiene Chrome, stampa il titolo come ho chiesto, ma quando vado a incollarlo nel mio progetto principale, si apre ancora una finestra, la finestra è vuota e semplicemente rimane lì come una finestra vuota fino a quando non ha finito di funzionare. Qualche idea su cosa sta succedendo? Ecco l'inizio del codice del mio progetto:

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
options = webdriver.ChromeOptions()
options.add_argument("--headless")

# gets the website
driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe" , chrome_options=options)
driver.get("https://www.legacyhomesal.com/pennington-freedom-series-richmond-ii")

# finds the Base Price header
price = driver.find_element_by_xpath("//h3[@class='ng-binding']")
print(price.text)

# converts the string to integer
p = price.text[12::]
r = int(p.replace(',', ''))
driver.close()

Ho provato diversi modi per farlo, ma solo quello sopra, un po 'funziona:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')  # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

e

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

Risposte

2 PDHide Dec 11 2020 at 09:54
driver = webdriver.Chrome(options=options)

l'errore dice correttamente cosa significa, usa options = your_optiondichrome_options = your_option

1 dachil1pil1 Dec 11 2020 at 11:34

Molto probabilmente c'è una finestra vuota perché stai chiamando "driver" due volte, ma la prima non ha URL quindi è solo vuota. mi sbarazzerei della prima variabile del driver.