2017-07-14 5 views
0

私は新規使用PythonSeleniumを使用しています。Webからコードをスクラップする際に問題があります。Python +セレニウム非検出要素

私は誰も私のためにそれを修正したくありません。私は問題がどうなっているのかを探しているので、進めることができます。

# 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) 

予想される要素が存在し、表示されても、例外が出力されます。

ドライバで要素が表示されないのはどうすればわかりますか?

答えて

1

セレンはブラウザを自動化するためのAPIを提供しますが、自動的には行いません。手動で何をしているのかに注意を払う必要があり、正確なステップを自動化するためのコードを書く必要があります。

リンクをクリックしてクーポンを表示すると、新しいタブ(ブラウザウィンドウ)が開き、そこでクーポンが表示されます。オートメーションにもこのコードを書く必要があります。

次のコードは、

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

switch_to_window()はどうもありがとうございました追加した後に完全に取り組んでいます。 .switch_to_windowが.switch_to.windowのために推奨されなくなりました。 –

関連する問題