2017-07-14 7 views
0

Ich bin neu zu verwenden Python mit Selen, und ich habe Probleme mit Scraping einen Code aus einem Web.Python + Selenium nicht detektierendes Element

Ich möchte nicht, dass jemand es für mich repariert. Ich bin auf der Suche nach einer Hand, was das Problem sein könnte, so dass ich fortfahren kann.

# inicializar el paketito selenium 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
driver.get("http://www.codigosdescuento.com/categoria-accesorios_de_moda.html") 
boton_promo = driver.find_element_by_xpath("//a[contains(@class,'boton_descuento')][1]") 
boton_promo.click() 

#buscamos el codigo 
try: 
    WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='rasca_cupon']"))) 
except: 
    print("K va... no se ha encontrado el codigo") 
    raise SystemExit 


codigo_descuento = driver.find_element_by_xpath("//div[@class='rasca_cupon']") 
print(codigo_descuento.text) 

Es druckt die Ausnahme, obwohl das erwartete Element existiert und sichtbar wird.

Woher weiß ich, warum der Fahrer das Element nicht erkennt?

Antwort

1

Selen bietet nur API zu automatisieren Browser, tut es nicht automatisch. Sie müssen also auf das achten, was Sie manuell tun, und müssen Code schreiben, um exakte Schritte zu automatisieren.

In Ihrem Fall, wenn Sie auf den Link klicken, um den Gutschein zu sehen, öffnet er einen neuen Tab (Browserfenster) und zeigt dann den Gutschein dort. Du musst diesen Code auch in der Automatisierung schreiben.

folgenden Code funktioniert perfekt nach der Zugabe von switch_to_window()

driver = webdriver.Firefox() 
driver.get("http://www.codigosdescuento.com/categoria-accesorios_de_moda.html") 
boton_promo = driver.find_element_by_xpath("//a[contains(@class,'boton_descuento')][1]") 
boton_promo.click() 
driver.switch_to_window(driver.window_handles[-1]) 
WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='rasca_cupon']"))) 
codigo_descuento = driver.find_element_by_xpath("//div[@class='rasca_cupon']") 
print(codigo_descuento.text) 
+0

Ihnen sehr danken. Ich habe jetzt gelesen, dass .switch_to_window zugunsten von .switch_to.window veraltet ist –

Verwandte Themen