2013-07-05 18 views
7

Ecco il link che sto cercando di fare clic:Facendo clic su un collegamento mediante il selenio utilizzando python

<a href="#" onclick="OpenAddKeywords();return false;" id="btnAddKeywords">Add Keywords</a> 

ho provato alcune opzioni (elencati di seguito), ma non ha funzionato; qualche idea?

  1. self.br.find_element_by_xpath("//*[@id='btnAddKeywords']").click()
  2. self.br.execute_script("OpenAddKeywords();return false;")

Questo è l'errore che ho per execute_script:

Message: u'Error Message => \'Can\'t find variable: OpenAddKeywords\'\n caused by Request => 

E questo è quello che ho per xpath:

Message: u'Error Message => \'Unable to find element with xpath \'//*[@id=\'btnAddKeywords\']\'\'\n caused by Request => 
+0

Come esattamente non hanno funzionato? –

+0

@AlexanderPetrovich ha aggiunto errori :) – Mark

+2

Hai provato 'self.br.find_element_by_id ('btnAddKeywords'). Click()'? Se ciò non funziona, è che potresti non essere sulla pagina che pensi di essere. – n1r3

risposta

3

Puoi provare a usare xpath come di seguito. Funziona per me perché ho usato l'ultimo progetto.

driver.find_element_by_xpath("xpath").click() 

Si prega di provare ...

+0

In realtà @Mark ha provato questo e ha menzionato il risultato nella domanda; per favore leggi attentamente la domanda e poi rispondi. :) –

5

Come ho detto nella mia stessa domanda here, il problema sarebbe risolto per mezzo di ActionChains classe; una breve codice è qui:

el = driver.find_element_by_id("someid") 
webdriver.ActionChains(driver).move_to_element(el).click(el).perform() 

Il problema principale è che in alcuni casi, specialmente quando si ha un alcuni codici javascript nella tua pagina, il DOM cambierebbe e l'elemento che avete trovato prima sarà staled. 'ActionChains' lo manterrà in vita per eseguire azioni su.

+0

@Mark Il mio problema era molto simile al tuo e la soluzione di Zeinab ha funzionato per me – rapvelopment

Problemi correlati