2013-05-30 13 views
6

Voglio fare clic su un pulsante che è visibile dopo il passaggio del mouse. La sua html è:Come fare clic su un elemento visibile dopo il passaggio del mouse sul selenio?

<span class="info"></span> 

Ho usato questo codice:

import selenium.webdriver as webdriver 
from selenium.webdriver.common.action_chains import ActionChains 

url = "http://example.com" 

driver = webdriver.Firefox() 
driver.get(url) 
element = driver.find_element_by_class_name("info") 
hov = ActionChains(driver).move_to_element(element) 
hov.perform() 
element.click() 

Non funziona però. Ho ottenuto un errore collegata con l'ultima riga di codice element.click():

selenium.common.exceptions.ElementNotVisibleException: Message: \ 
u'Element is not currently visible and so may not be interacted with' 

Qualche suggerimento per favore?

+0

Gli errori sono esattamente? – Arran

+0

@ Arran, ho modificato la domanda. – nutship

risposta

9

Scommetto che dovresti aspettare l'elemento finché non diventa visibile.

tre opzioni:

  • chiamata time.sleep(n)
  • uso WebDriverWait come è suggerito here, here e here

mi piacerebbe andare con la seconda opzione.

UPD:

Su questo particolare sito in bilico con il selenio non ha funzionato a tutti, quindi l'unica opzione era quella di fare clic sul pulsante con js via execute_script:

driver.execute_script('$("span.info").click();') 

Speranza che aiuta.

+0

Grazie per i suggerimenti, ma ho provato 'time.sleep' in realtà e sembra che non sia il caso. – nutship

+0

Ok, 'WebDriverWait' dovrebbe funzionare, fammi sapere se avrai problemi con esso. – alecxe

+0

Ci scusiamo per la risposta in ritardo ma è necessario leggere i collegamenti. Continuo a pensare che il mio problema sia diverso in quanto l'elemento/pulsante nel mio caso è visibile/accessibile in ogni momento. Quindi posso passare il mouse su di esso all'istante mentre la pagina viene caricata. Non c'è alcuna esecuzione di codice Ajax/js in mezzo. Non riesco proprio a localizzare correttamente gli elementi con 'find_element_by' o' xpath'. – nutship

Problemi correlati