我是 Python 与 Selenium 的新手,我在从网上抓取代码时遇到了麻烦。
我不希望任何人为我修复它。我正在寻找问题可能是什么,以便我可以继续。
# 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)
它打印异常,即使预期的元素存在并且可见。
我怎么知道是什么让驱动程序看不到元素?
答案 0 :(得分:1)
Selenium只为自动化浏览器提供API,它不会自动执行。所以你需要手动注意你正在做什么,并需要编写代码来自动执行确切的步骤。
在您的情况下,当您点击链接查看优惠券时,它会打开一个新标签(浏览器窗口),然后在那里显示优惠券。您还必须在Automation中编写该代码。
添加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)